2010-12-31 13 views
0

Ich verwende ibatis und Oracle 10. Der jdbc-Treiber ist oracle.jdbc.driver.OracleDriver. Wenn ich Daten aus der Tabelle abrufe, habe ich zwei Leerzeichen gefunden. Nehmen wir zum Beispiel die Spalte ACTIVE_IND CHAR (1), die abgerufenen Daten sind 'A'.Zusätzliche Leerzeichen am Ende beim Abrufen von CHAR-Werten

Bitte beachten Sie, dass dies für alle CHAR-Felder geschieht. Und keine zusätzlichen Leerzeichen sind immer doppelt so lang wie CHAR. Wenn beispielsweise eine Spalte von CHAR (14) vorhanden ist, sind am Ende keine zusätzlichen Leerzeichen 28.

Dies geschieht nur in der System Testing-Umgebung. In unseren lokalen Desktops, die dieselbe ojdbc14.jar und denselben Code verwenden, haben wir keine zusätzlichen Leerzeichen erhalten.

Ich denke, das einzige, was in System Testing-Umgebung anders ist Datenbank. Handelt es sich um eine Zeichencodierung? Haben wir eine Konfiguration in der Datenbank, um sie zu ändern?

+0

Oracle kann 1-Byte-Zeichensätze oder Multibyte-Zeichensätze speichern. CHAR (1) ist nicht mehr beschreibend genug ... ist das CHAR (1 CHAR) oder CHAR (1 BYTES). Wenn die Antwort die erste ist und der Zeichensatz als 2 Bytes definiert ist, beträgt der zugewiesene Speicherplatz zwei Bytes. –

Antwort

2

Es klingt sehr nach einem Zeichencodierungsproblem. Haben Sie

  1. die Konfiguration des Oracle db jeweils
  2. geprüft, welche Zeichencodierung Ihre App unter für jede Umgebung ausgeführt wird (Sie diese -Dfile.encoding=UTF8 o.ä. konfigurieren können - ich würde dies dringend empfohlen)
0

Es kann nicht vollständig aus den Informationen, die Sie gaben, was genau schief gelaufen ist, bestimmt werden. Was die Codierung für eine Spalte betrifft, wird sie von der COLLATION SETTING beeinflusst. Sie können den folgenden Link für weitere Informationen überprüfen: http://www.lessanvaezi.com/collation-in-oracle-using-nls_sort/