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.
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 .
Tags und Links oracle character-encoding plsql coldfusion coldfusion-9