Java UTF-8-Dateinamen mit IBM JVM (AIX)

9

Ich habe Probleme zu verstehen, wie die IBM JVM-Implementierung von java.io.File mit UTF-8 unter AIX im JFS2-Dateisystem umgeht. Ich vermute, dass es eine Systemeigenschaft gibt, die ich übersehen habe, aber ich konnte sie noch nicht finden.

Nehmen wir an, ich habe eine Datei namens othér (wobei é U + 00E9 oder UTF-8 Bytes 0xc3 0xa9 ist). Der Dateiname ist in UTF-8 codiert und wurde von einem C-Programm erstellt:

%Vor%

Wenn ich eine Java-Zeichenkette in Java erstelle, die für den Dateinamen repräsentativ ist, kann sie nicht geöffnet werden. Außerdem, wenn ich File.listFiles() in Java verwende, besteht es darauf, dies als Latin1-String zu behandeln. Zum Beispiel:

%Vor%

Die Ergebnisse dieses Programms sind:

%Vor%

So scheint es, dass meine Dateinamen als Latin1 behandelt werden. Ich habe versucht, die file.encoding festzulegen Systemeigenschaft zu UTF8 und die client.encoding.override Systemeigenschaft auf UTF-8 ohne Erfolg. Meine LANG und LC_ALL Einstellungen sind en_US.UTF-8 :

%Vor%

Die primäre Sprachumgebung meines Systems, wie von SMIT konfiguriert, ist "ISO8859-1". Ich weiß nicht genau, welche Auswirkungen diese Einstellung hat, aber ich kann sie nicht ändern. Ich vermute, dass, wenn ich könnte dies zu "UTF8 Englisch" ändern, dann kann das Problem beheben, aber da JFS2 Dateinamen in Unicode speichert und Java arbeitet in Unicode intern, ich fühle wie es sollte eine allgemeinere Lösung für das Problem sein.

Gibt es eine andere Systemeigenschaft für J9, die ich einstellen kann, die es zwingen wird, UTF-8-Dateinamen ungeachtet meiner SMIT-Einstellung zu verwenden?

AIX-Version ist 5.2, Java-Version ist IBM J9 (1.5.0), Dateisystem ist JFS2:

%Vor%

Update: Dies geschieht immer noch auf Java6:

%Vor%     
Edward Thomson 19.10.2012, 19:04
quelle

2 Antworten

4

Ich habe die Antwort gefunden. Ich versuche wirklich hier zu helfen.

Dies ist ein Blogbeitrag über Ihr tatsächliches Problem. Ich verspreche es.

Versuchen Sie, Ihr Programm mit dem gesetzten -Dsun.jnu.encoding=UTF-8 -Flag auszuführen.

    
durron597 24.10.2012, 17:09
quelle
1

Siehe Ссылка für eine Liste gültiger AIX-Gebietsschemata Ihre Exporte sollten so aussehen, wie ich denke

%Vor%     
Oualid Jabnoune 27.10.2012 17:54
quelle

Tags und Links