Domanda

Ho un'applicazione Java che decodifica un String codificato UTF-8 ricevuto via cavo e lo salva in una colonna varchar nel mio database (SQL Server 2000). Sto salvando il record usando CallableStatement di JDBC (chiamando il metodo setString per impostare il parametro per questa colonna).

Il problema che vedo è che è stato scritto un particolare String che contiene il valore ASCII 0 ( NUL ). Questo mi suggerisce che il server SQL non può rappresentare un particolare carattere Unicode e che il driver JDBC ha deciso di sostituire il valore ASCII 0, anche se potrei sbagliarmi.

  • Qualcun altro ha riscontrato questo problema?
  • Esiste un meccanismo che posso usare per far fallire la chiamata CallableStatement in questa situazione?

Idealmente, vorrei garantire che i dati siano stati salvati esattamente come specificato, oppure "fallire velocemente".

Il set di caratteri del mio database è Latin1_General_AS_CS .

Grazie in anticipo.

È stato utile?

Soluzione

È necessario utilizzare il tipo "NVARCHAR" nel database.

Altri suggerimenti

Solo un WAG, ma usando .setBytes (String parameterName, byte [] x) sarebbe un trucco? L'array di byte verrebbe da myString.getBytes () . Potresti provare a usare diversi set di caratteri anche con getBytes () .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top