Welche Codierung wird beim Aufrufen einer Oracle PL / SQL-Prozedur verwendet?

9

Auf meiner Coldfusion-Seite rufe ich eine PL / SQL-Prozedur auf. Das HTML-Formular wird mit UTF-8 codiert, der Oracle-DB hat die Codierung WE8ISO8859P1 . Also, welche Art von Konvertierung passiert im Fall von i_value unten?

Ich bin besonders daran interessiert, was mit MS Word linkes Zitat passiert (welches in UTF-8 als E28098 kodiert ist). Wenn ich i_value in PL / SQL dekodiere, wird dies 18 (Hex). Wenn man bedenkt, dass es U + 2018 ist, macht das einen Sinn, aber ich frage mich immer noch, warum die 20 verschluckt wird.

%Vor%     
Roland 29.05.2015, 13:26
quelle

1 Antwort

0

ColdFusion ist Java-basiert, daher denke ich, dass die String-Variablen mit UTF-16 codiert sind.

Beim Übergang von UTF-16 (2-Byte-Codierung) zu einer 1-Byte-Codierung (z. B. WE8ISO8859P1 ) wie in meinem Beispiel wird das MSB ignoriert und nur das LSB berücksichtigt.

Dies würde das beobachtete Verhalten erklären: Ich habe bemerkt, dass einige der Bytes einfach verschluckt werden, wenn sie an die DB gesendet werden, z. Das linke Hochkomma (0x2018 in UTF-16) wird in der Datenbank nur noch 0x18 .

    
Roland 08.06.2015, 18:46
quelle