none
manejo de simbolos en un varchar en sq server 2008 RRS feed

  • Pregunta

  • Buenas tardes, tengo el siguiente inconveniente: tengo una base de datos donde algunos nombres tienen simbolos, por ejemplo: G╙MEZ RAIGOSO DANIEL EDUARDO.   Cuando voy a mostrar el dato en la aplicación en C# .net 2010 me lo trae tal cual, pero yo necesito guardar dicho valor en otra base de datos creada por mi, cuando la guardo, me reemplaza el simbolo por una letra.

    ¿Como puedo manejar este tipo de campos? ¿es posible que convertir el campo para que el simbolo lo reemplace por la letra correcta? ¿es necesario realizar una validación en e codigo de la aplicación?

    Gracias por su ayuda, en verdad no tengo la remota idea de como solucionar este inconveniente.

    miércoles, 21 de marzo de 2012 18:38

Respuestas

  • Entonces mi siguiente intento sería examinar la fuente:  ¿Qué tipo de datos es la fuente:  varchar o nvarchar?  Idealmente debe ser nvarchar también para eliminar estos conflictos.

    También sería bueno saber si ambas bases de datos utilizan el mismo character set.  De esto no recuerdo mucho en este momento.  No recuerdo si eso únicamente afecta los ordenamientos (y comparaciones) o si afecta en alguna forma a la hora de grabar los datos.

    Básicamente su problema es este:  Bajo un cierto character set, C# interpreta el valor correctamente, pero bajo otro el carácter especial tiene otra interpretación y por lo tanto el dato se modifica.

    Sería entonces cuestión de determinar en qué parte de la manipulación del dato se da la transformación:  En la fuente, en el código C# que realiza las copias, o a la hora de grabar en la otra base de datos.


    Jose R. MCP

    miércoles, 21 de marzo de 2012 19:06

Todas las respuestas

  • Supongo que el problema viene a darse cuando C# convierte la representación origina en una representación ANSI.  Por eso siempre digo:  Dejemos de usar varchar; usemos siempre nvarchar para no tener problemas de este tipo.

    Así que mi primera recomendación es:  Modifique el campo para que sea de tipo nvarchar y trate nuevamente.


    Jose R. MCP

    miércoles, 21 de marzo de 2012 18:54
  • Supongo que el problema viene a darse cuando C# convierte la representación origina en una representación ANSI.  Por eso siempre digo:  Dejemos de usar varchar; usemos siempre nvarchar para no tener problemas de este tipo.

    Así que mi primera recomendación es:  Modifique el campo para que sea de tipo nvarchar y trate nuevamente.


    Jose R. MCP


    Gracias por tu pronta respuesta, ya cambie el campo por "nvarchar" y sigue igual.  Gracias por tu ayuda
    miércoles, 21 de marzo de 2012 19:00
  • Entonces mi siguiente intento sería examinar la fuente:  ¿Qué tipo de datos es la fuente:  varchar o nvarchar?  Idealmente debe ser nvarchar también para eliminar estos conflictos.

    También sería bueno saber si ambas bases de datos utilizan el mismo character set.  De esto no recuerdo mucho en este momento.  No recuerdo si eso únicamente afecta los ordenamientos (y comparaciones) o si afecta en alguna forma a la hora de grabar los datos.

    Básicamente su problema es este:  Bajo un cierto character set, C# interpreta el valor correctamente, pero bajo otro el carácter especial tiene otra interpretación y por lo tanto el dato se modifica.

    Sería entonces cuestión de determinar en qué parte de la manipulación del dato se da la transformación:  En la fuente, en el código C# que realiza las copias, o a la hora de grabar en la otra base de datos.


    Jose R. MCP

    miércoles, 21 de marzo de 2012 19:06