Mam kilka katalogów/plików z japońskimi znakami. Jeśli spróbuję odczytać nazwę pliku (nie zawartość) zawierającą (jako przykład) a ク, otrzymam ciąg zawierający . Jeśli spróbuję utworzyć plik/katalog zawierający ク, pojawi się plik/katalog zawierający znak.java read write unicode/UTF-8 nazwy plików (nie zawiera)
Jako przykład: Wyświetlam listę plików za pomocą.
File file = new File(".");
String[] filesAndDirs = file.list();
Tablica filesAndDirs zawiera teraz katalogi znaków specjalnych. Ciąg zawiera teraz tylko . Nie ma nic do odkodowania, ponieważ getbytes pokazuje tylko "-17 -65 -67" dla każdego znaku w nazwie pliku, nawet dla różnych znaków.
Używam MacOS 10.8.2 Java 7_10 i Netbeans.
Wszelkie pomysły?
góry dziękuję :)
Nie jest jasne * jak * wyświetlasz te nazwy plików lub czy podajesz kodowanie dla 'String.getBytes()' (co zawsze powinieneś). Powinieneś zrzucić kod punktu UTF-16 dla każdego znaku w nazwie pliku, aby zobaczyć, co się naprawdę dzieje. Ponadto nie jest jasne, w jaki sposób otrzymujesz dane wejściowe podczas próby utworzenia pliku. –
'getBytes' zwraca to, co wydaje się być poprawne UTF8 –
@Jan Tak, wygląda na poprawny UT8, ale getBytes zwraca" -17 -65 -67 "dla każdego znaku. Ale nie wszystkie znaki w nazwie pliku/katalogu są takie same. Wygląda na to, że tracę wszystkie informacje między systemem operacyjnym a JavaVM. "-17 -65 -67" powtarza się dla każdego znaku specjalnego. [a-zA-Z ...] są zwracane zgodnie z oczekiwaniami. Przynajmniej bym oczekiwał różnych bajtów dla każdego znaku. –