Konvertieren von ISO-8859-1 zu UTF-8 Verwendung von groovy
brauche ich zum konvertieren einer ISO-8859-1 Datei auf utf-8-Codierung, ohne dabei Inhalte intormations...
ich habe eine Datei die wie folgt aussieht:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>
Nicht, ich will encode in UTF-8.
Ich habe versucht, nach:
f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
ts=new String(f.getBytes("UTF-8"), "UTF-8")
g=new File('c:/temp/myutf8.xml').write(ts)
nicht funktioniert wegen String-Inkompatibilitäten.
Dann lese ich etwas über bytestreamreaders/Schriftsteller/streamingmarkupbuilder und andere...
dann habe ich versucht
f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
mb = new groovy.xml.StreamingMarkupBuilder()
mb.encoding = "UTF-8"
new OutputStreamWriter(new FileOutputStream('c:/temp/myutf8.xml'),'utf-8') << mb.bind {
mkp.xmlDeclaration()
out << f
}
dies war absolut nicht das, was ich wollte..
Ich will einfach nur, um den Inhalt einer xml Lesen mit ISO-8859-1 Kartenleser und dann legen Sie Sie in eine neue (alte) Datei... warum ist das so kompliziert :-/
Das Ergebnis sollte einfach sein, und die Datei sollte auch wirklich in utf-8 codiert:
<?xml version="1.0" encoding="UTF-8" ?>
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>
Vielen Dank für alle Antworten
Cheers
- Ich habe es von der ersten Idee über Groovy, aber ich gehe davon aus, dass, wenn Sie geben Sie die Codierung der Datei für
File.getText
es wird umgestellt werden, dass die Kodierung auf Ihre interne Codierung automatisch. I. e. Sie wahrscheinlich nicht brauchen etwas anderes zu tun, so lange, wie Sie Ihre interne Codierung eingestellt ist UTF-8. Jemand korrigiert mich wenn ich bin off-track hier. Alternativ, was sind die genauen Fehler erhalten Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Ich hab es gerade versucht, es funktioniert 🙂
gleichen wie in java: die Bibliotheken, die die Konvertierung für Sie tun...
als deceze sagte: wenn Sie angeben, dass eine Codierung, wird es umgewandelt werden in ein internes format (utf-16 afaik). Wenn Sie angeben, dass eine andere Kodierung beim schreiben der Zeichenfolge ist, konvertiert diese Kodierung.
Aber wenn Sie mit XML arbeiten, Sie sollten nicht sich sorgen über die Codierung sowieso, weil der XML-parser wird sich darum kümmern. Es liest die ersten Zeichen
<?xml
und bestimmt die grundlegende Kodierung von diese Zeichen. Danach ist es in der Lage zu Lesen, die Kodierung von Informationen aus Ihren xml-header und verwenden Sie diese.<?xml
? Ist das nicht die gleiche, die in UTF-8 und ASCII und andere? 🙂<?xml
Zeichen sind nicht das gleiche. Siehe w3.org/TR/xml/#sec-guessing für details. Es ist sehr interessant und ein guter Grund, nicht erstellen Sie Ihre eigenen code, um zu erraten, wird die Codierung.<?xml version="1.0" encoding="ISO-8859-1" ?> <HelloEncodingWorld>ÃöäüÃÃà Test!!!</HelloEncodingWorld>
und der Codierung, die angezeigt wird, ist immer noch ISO-8859-1 (mit notepad++) Vielleicht die erste Zeile zwingt den editor zu zeigen, wie...ahh ok das war in diesem Fall, omg, ich habe bereits versucht auf diese Weise so oft....aber nie realisiert, dass die Daten codiert in utf-8 aber gezeigt, wie ansi... vielen Dank.Macht es ein wenig mehr Groovy, und nicht dass die ganze Datei in den Speicher passt, können Sie die Leser-und Autoren-stream der Datei. Dies war meine Lösung, wenn ich hatte die Dateien zu groß für plain old Unix
iconv(1)
.