Por que um traço está se tornando uma pergunta? Ou problemas com a codificação de dados no SQL

Um cliente entrou em contato comigo, para quem, seis meses atrás, fiz o upload de dados do Excel para a lista de produtos Aplicativos do cliente. Vídeo no resultado.
O arquivo foi formado na China, onde o alfabeto cirílico usual não é usado.

Um item com o nome "ABM3C - 25 - D - Y - T» T "está carregado.

Após o download, obtemos “ABM3C? 25? D4Y? T.” Após o ProFiler, peguei o procedimento de gravação:

exec 3, 'ABM3C-25-D4Y-T'

Ou seja, a substituição já foi feita no próprio SQL. O banco de dados foi criado na plataforma Client Communicator. Por hábito, verifiquei as opções de classificação para o próprio banco de dados, está tudo bem - Cyrillic_General_CI_AS, conforme recomendado durante a instalação.

Jogado com elenco e conversão - emite perguntas em vez de traços. Não consegui resolver o problema sozinho. Entrei em contato com o serviço de suporte técnico do desenvolvedor da plataforma Client Communicator com esse problema.

A resposta do desenvolvedor no início foi muito surpreendente: "Você deve usar o tipo de dados Nvarchar e provavelmente usa Varchar". A gravação é realizada em um campo com o tipo de dados nvarchar (definido por padrão ao criar um campo no configurador).

Mostro que o script mais simples me dá todos os mesmos pontos de interrogação infelizes.
selecione 'ABM3C - 25 D D4Y - T', elenco ('ABM3C 25 25 D DY - T' como nvarchar)

Recebi conselhos - coloque N. antes da primeira citação simples,

selecione N'ABM3C - 25 - D4Y - T '

me deu o resultado desejado . Ao adicionar N, indicamos ao SQL que precisamos processar essa sequência como um valor em Unicode.

Corrigida a chamada de procedimento adicionando N:

exec 3, N'ABM3C - 25 - D4Y - T '

Eu sempre soube que tinha que colocar a letra N antes das aspas, mas não lhe atribui nenhum significado especial até encontrar esse problema.

All Articles