Pregunta

Tengo una aplicación Java que decodifica una String UTF-8 recibida a través del cable y la guarda en una columna varchar en mi base de datos (SQL Server 2000). Estoy guardando el registro usando el CallableStatement de JDBC (llamando al método setString para establecer el parámetro para esta columna).

El problema que veo es que se ha escrito una String particular que contiene el valor ASCII 0 ( NUL ). Esto me sugiere que el servidor SQL no puede representar un carácter Unicode particular y que el controlador JDBC ha decidido sustituirlo en el valor ASCII 0, aunque puedo estar equivocado.

  • ¿Alguien más ha encontrado este problema?
  • ¿Hay algún mecanismo que pueda usar para hacer que la llamada CallableStatement falle en esta situación?

Idealmente, me gustaría garantizar que los datos se hayan guardado exactamente como se especifica o, de lo contrario, "fallará rápidamente".

El juego de caracteres de mi base de datos es Latin1_General_AS_CS .

Gracias de antemano.

¿Fue útil?

Solución

Debe usar el tipo 'NVARCHAR' en la base de datos.

Otros consejos

Solo un WAG, pero si usara .setBytes (String parametersName, byte [] x) , ¿es correcto? La matriz de bytes provendría de myString.getBytes () . Es posible que desee utilizar diferentes juegos de caracteres con getBytes () , también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top