Sonderzeichen und Java-Zeichenfolge
-
12-12-2019 - |
Frage
Ich habe eine Textzeichenfolge (Java-String), die generationstabelletagcode enthalten soll.
In der Realty enthält es zusätzlich zum Rest, "C2 ', ein Steuerzeichen.Ich habe den Hex-Dump integriert, siehe 'gerald.o'leary'
für einen Hex-Dump.
Wenn ich es in der DB speichern und wieder las, indem Sie SQL in einem Client ausführen und in einem SEX-Editor einfügen, in einem SEX-Editor, den ich mit 3F ersetzt habe.
Ich hätte mit ihm lebbar sein können, aber für die Tatsache, dass diese beiden Saiten in Java mit String.equals () verglichen werden, wird falsch zurückgegeben.
Kann jemand bitte erklären, was hier los ist ?!
Lösung
Haben Sie geprüft, ob Ihre SQL-DB UTF-8 / Unicode-Zeichen (d. H. Es ist nicht ISO-8859-1, ASCII oder ähnlich) gespeichert?
- .
- Ausgabe der Zeichenfolge zuerst an den Standardausgang, um zu sehen, ob er wirklich den richtigen Zeichen enthält (? ist in der Leistung in Ordnung, aber ?? oder 0xc2 0x92= Â Â »Ist nicht).
- Überprüfen Sie dann Ihren Datenbankzeichensatz.Siehe das Handbuch.
Andere Tipps
Ich weiß nicht, wie Sie den Hex-Dump bekommen haben, aber Java-Saiten sind Unicode-Saiten, also gibt es keine 1: 1-Korrespondenz zwischen Zeichen und Bytes.Ich vermute, Ihre Zeichenfolge enthält Unicode-Zeichen, die nicht durch einzelne Bytes dargestellt werden können, und Ihre Charakterhandhabung (der annimmt, dass dies der Fall ist) ist fehlerhaft.