Überprüfen, ob ein String enthält kodierte Zeichen
Hallo, ich bin auf der Suche nach einem Weg, um festzustellen, ob eine Zeichenfolge codiert
Beispielsweise
String name = "Hellä world";
String encoded = new String(name.getBytes("utf-8"), "iso8859-1");
Die Ausgabe dieses encoded
variable:
Hellä world
Wie Sie sehen können gibt es Ein a mit Grab und ein anderes symbol. Gibt es eine Möglichkeit zu prüfen, ob die Ausgabe enthält codierte Zeichen?
Alle Zeichen codiert sind. Versuchen Sie zu sagen, wenn ein Zeichen kodiert wurde, die als zwei bytes oder mehr statt?
Wenn Sie versuchen, um zu überprüfen, ob der string
Wenn Sie versuchen, um zu überprüfen, ob der string
name
korrekt codiert in ISO-8859-1, dann diese bestehende Frage (verlinkt von einer dieser Frage von links) sieht aus wie die Antwort.InformationsquelleAutor Decrypter | 2012-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie Sie wollen, um zu überprüfen, ob ein string decodiert von bytes in latin1 hätte dekodiert, die in UTF-8. Das ist einfach, weil die illegalen byte-Sequenzen ersetzt werden durch das Zeichen \ufffd:
InformationsquelleAutor Joni
Ihre Frage macht keinen Sinn. Ein java -
String
ist eine Liste von Zeichen. Sie nicht über eine Codierung, bis Sie bei der Konvertierung in bytes, an welcher Stelle Sie müssen angeben (obwohl Sie werden sehen, eine Menge code, der die Plattform nutzt Standard, was z.B.String.getBytes()
mit kein argument ist).Ich schlage vor, Sie Lesen Sie diese http://kunststube.net/encoding/.
CharsetDecoder
für ein bestimmtes Ziel konfiguriert Kodierung (UTF-8/ISO-8859-1, etc.), und versuchen Sie, führen Sie Ihre Schnur durch, die decoder. Wenn die Entschlüsselung fehlschlägt oder wirft eine Ausnahme, Sie wissen, dass Ihr String enthält 1+ - Zeichen, die nicht das Ziel der Kodierung. Wenn der decoder decodiert, ohne Fehler, dann wissen Sie, dass Ihr String erfüllt die Kriterien für die Codierung.InformationsquelleAutor artbristol
Dieser code ist nur ein Charakter corruption bug. Nehmen Sie einen UTF-16 string, transcode es auf UTF-8, so tun, es ist ISO-8859-1 und transkodieren Sie zurück zu UTF-16, was falsch codierte Zeichen.
InformationsquelleAutor McDowell
Wenn ich richtig deine Frage verstanden, dieser code kann dir helfen. Die Funktion isEncoded überprüfen, ob die parameter könnte kodiert werden als ascii-oder wenn es enthält nicht-ascii-chars.
Können Sie auch überprüfen, für andere charset charset ändern var oder verschieben es auf einen parameter.
InformationsquelleAutor Andrea Parodi
Ich bin mir nicht wirklich sicher, was Sie versuchen zu tun oder was ist dein problem.
Diese Zeile macht keinen Sinn:
Sie sind Kodierung Ihrer
name
in "UTF-8" und dann versuchen zu entschlüsseln, wie "iso8859-1".Wenn du was zum Kodieren der
name
als "iso8859-1" just doname.getBytes("iso8859-1")
.Bitte sagen Sie uns, was ist das problem aufgetreten, so dass wir damit mehr helfen kann.
InformationsquelleAutor bruno conde
Können Sie überprüfen, ob Ihr string kodiert ist oder nicht, indem Sie diesen code
Ja, weil ich denke, die Frage ist, wie zu finden, die eine Zeichenfolge enthält, codiert chars oder nicht, und diese Methode gibt, die
Aber Charakter.getType('ä') == Zeichen.LOWERCASE_LETTER und Charakter.getType('ä') != Charakter.OTHER_LETTER, so dass Ihr code nicht funktioniert. Der Charakter.OTHER_LETTER enthält nicht alle unicode-Zeichen, die nur einer bestimmten Untergruppe.
Nicht funktionieren ........
InformationsquelleAutor Pooya