# Java-Dateien in einheitlichen Zeichensatz umwandeln



## Centai (8. Mrz 2012)

Ich habe ein großes Projekt, in welchem sich viele Entwickler verewigt haben. Das Problem ist, dass die Dateien mit Java-Quellcode und Properties recht unterschiedliche Zeichensätze haben. Von ASCII über Windows-1252 zu UTF-8 ist alles dabei. 

Problematisch ist, dass Texte die aus Propertydateien ausgelesen werden z.T. falsch dargestellt werden. Nun möchte ich alle Dateien einheitlich auf UTF-8 konvertieren. 

Ich habe dazu schon das Tool "MOJICOCO" ausprobiert, doch das hat mir sämtliche Umlaute zerissen. Hat jemand damit Erfahrungen und kann eine Vorgehensweise empfehlen? 
Empfiehlt sich für UTF-8 mit oder ohne BOM?


----------



## tfa (8. Mrz 2012)

Ich benutze iconv (auf Linux), allerdings nur auf dem CI-Server, um die Quelldateien vor dem Build von Windows-Codepage nach UTF-8 zu konvertieren. Das geht ganz gut.
Bei den Property-Dateien musst du aufpassen. Die erwartet Java im ISO-8859-1-Format. Siehe API-Doku.


----------



## Centai (8. Mrz 2012)

Wiso erwartet Java die Propertydateien im ISO-8859-1 Format? Wir haben dort z.B. die Übersetzung in andere Sprachen ausgelagert, die einen anderen Zeichensatz haben. Z.T. stehen dort die einzelnen Charaketer wie \u7cfb\u7edf\u65ad\u5f00. Gibt es dafür keine universelle Möglichkeit, UTF-8 einzusetzen?


----------



## tfa (8. Mrz 2012)

Properties (Java Platform SE 7 )


----------



## Centai (8. Mrz 2012)

So wie sich das für mich darstellt, wäre es eventuell sinnvoller XML-Dateien zu verwenden anstatt Properties.


----------



## tfa (8. Mrz 2012)

Nur wegen dem Encoding? Wenn in der Datei nur Properties stehen (also schlüssel=wert) würd ich nicht XML nehmen.


----------



## turtle (8. Mrz 2012)

Vielleicht hilft das weiter?


----------



## irgendjemand (8. Mrz 2012)

hmm ... Properties bietet auch die methode load(Reader) ... und soweit ich weis kann man diesem ein Charset mitgeben ... ergo sollte es doch so möglich sein UTF-8 props zu laden ... oder täusche ich mich da ?


----------



## Gast2 (8. Mrz 2012)

Ja damit funktionierts, allerdings wenn du load(InputStream) nutzt wird nen ISO 8859-1 character encoding verwendet.


----------



## irgendjemand (8. Mrz 2012)

ja ... soweit hab ich die doc gelesen und auch verstanden ... aber wenn man über den "InputStream" einen "InputStreamReader" legt man diesen ja ein charset mitgeben ...
in wie fern verhält sich properties dann da ? wird durch die charset-angabe des readers nur die art und weise beeinflusst wie der reader die daten zu lesen hat ... die java-interne darstellung dann aber dem props gefordertem iso entspricht ?
ich weis es leider selbst nicht ... mir ist halt nur load(Reader) eingefallen und das man z.b. dem InputStreamReader halt einen charset mitgeben kann


----------



## GUI-Programmer (9. Mrz 2012)

Ich kann dir nur XStream empfehlen, da sehr leicht handzuhaben und zudem schaut die erstellte XML auch sehr übersichtlich aus.


----------

