¿Por qué un guión se convierte en una pregunta? O problemas con la codificación de datos en SQL

Un cliente me contactó, a quien hace seis meses cargué datos de Excel a la lista de productos Aplicaciones del cliente. Video sobre el resultado.
El archivo se formó en China, donde no se usa el alfabeto cirílico habitual.

Se carga un elemento con el nombre "ABM3C - 25 - D - Y T T» ".

Después de la descarga, obtenemos "ABM3C? 25? D4Y? T". Después de ProFiler, capté el procedimiento de escritura:

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

Es decir, el reemplazo ya está hecho en el propio SQL. La base de datos se creó en la plataforma Client Communicator. Por costumbre, verifiqué las opciones de clasificación para la base de datos en sí, todo está bien: Cyrillic_General_CI_AS, como se recomienda durante la instalación.

Jugó con conversión y conversión: emite preguntas en lugar de guiones. No pude resolver el problema yo mismo ... Me puse en contacto con el servicio de soporte técnico del desarrollador de la plataforma Client Communicator con este problema.

La respuesta del desarrollador al principio fue muy sorprendente: "Debe usar el tipo de datos Nvarchar, y probablemente use Varchar". La grabación se realiza en un campo con el tipo de datos nvarchar (establecido de forma predeterminada al crear un campo en el configurador).

Muestro que el guión más simple me da los mismos signos de interrogación desafortunados.
seleccione 'ABM3C 25 25 D D4Y T T', elenco ('ABM3C 25 25 D D4Y T T' como nvarchar) Recibí

una propina - ponga N. antes de la primera cita simple,

seleccione N'ABM3C 25 25 D D4Y T T '

me dio el resultado deseado . Al agregar N, señalamos SQL que necesitamos procesar esta cadena como un valor en Unicode.

Se corrigió la llamada al procedimiento agregando N:

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

Siempre supe que tenía que poner la letra N delante de las comillas, pero no le di ninguna importancia especial hasta que me encontré con este problema.

All Articles