Question

J'ai une application Java qui décode une chaîne encodée en UTF-8 et l'enregistre dans une colonne varchar de ma base de données (SQL Server 2000). Je sauvegarde l'enregistrement à l'aide du CallableStatement de JDBC (en appelant la méthode setString pour définir le paramètre de cette colonne).

Le problème que je vois est qu’un String particulier contenant la valeur ASCII 0 ( NUL ) a été écrit. Cela me suggère que SQL Server ne peut pas représenter un caractère Unicode particulier et que le pilote JDBC a décidé de remplacer la valeur ASCII par 0, bien que je puisse me tromper.

  • Quelqu'un at-il rencontré ce problème?
  • Existe-t-il un mécanisme que je peux utiliser pour provoquer l'échec de l'appel CallableStatement dans cette situation?

Idéalement, je voudrais garantir que les données ont été sauvegardées exactement comme spécifié ou sinon, "échec rapide".

Mon jeu de caractères de la base de données est Latin1_General_AS_CS .

Merci d'avance.

Était-ce utile?

La solution

Vous devez utiliser le type "NVARCHAR" dans la base de données.

Autres conseils

Juste un WAG, mais l'utilisation de .setBytes (String parameterName, byte [] x) ferait-elle une ruse? Le tableau d'octets proviendrait de myString.getBytes () . Vous voudrez peut-être aussi utiliser différents jeux de caractères avec getBytes () .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top