Java: проблема с греческими именами файлов (нелатинскими именами файлов)

Использование Java: я читаю каталог, содержащий файлы с греческими именами. Но когда я вывожу строку, содержащую имя файла, я получаю это «???????.something».

Это потому, что я запускаю приложение Java. через консоль?

Есть ли способ правильно прочитать нелатинские имена файлов?

Спасибо,


person Andreas    schedule 20.08.2009    source источник
comment
Публикация некоторого кода может дать вам лучшие ответы.   -  person llamaoo7    schedule 20.08.2009


Ответы (3)


Вполне возможно, что имена файлов читаются правильно; наиболее вероятное объяснение заключается в том, что ваша консоль не может отображать нелатинские символы.

Например, следующая программа должна вывести первые три буквы греческого алфавита:



public class AlphaBetaGamma
{
    public static void main(String[] args)
    {
        String abc = "\u03b1\u03b2\u03b3";
        System.out.println(abc);
    }
}

Он печатает "???" на моей консоли, потому что она не способна отображать греческие символы.

person Simon Nickerson    schedule 20.08.2009

измените свою консоль, чтобы использовать utf-8 в качестве кодировки символов - это должно решить эту проблему

person Niko    schedule 20.08.2009
comment
Это будет работать только в том случае, если кодировка платформы по умолчанию — UTF-8. Таким образом, это может работать в Ubuntu, но не будет работать в Windows. - person McDowell; 21.08.2009

Чтобы добавить к тому, что написал Саймонн, стоит записать кодовые точки Unicode примерно так:

public static void dumpString(String text)
{
    for (int i=0; i < text.length(); i++)
    {
        char c = text.charAt(i);
        System.out.printf("%c U+%04x", c, (int) c);
        System.out.println();
    }
}

Затем вы можете посетить веб-сайт Unicode, чтобы узнать, что эти символы на самом деле означают. (Очень удобна страница кодовых диаграмм.)

person Jon Skeet    schedule 20.08.2009