2016-04-27 2 views
3

ввода I некоторых аргументах любит -Д 你好 = 你好 и вызвать единственный класс,Запуск Java программы с китайскими аргументами в затмении

файла Java следующим образом:

public class Test { 

public static void main(String[] args) throws Exception { 
    for(String name :args){ 
     System.out.println(name); 
    } 
} 

}

результаты печати:

-D??=?? 

как можно исправить эту проблему?

+0

Посмотрите, могут ли эти две ссылки помочь: http://www.mkyong.com/java/how-to-display-chinese-character-in-eclipse-console/ и http://stackoverflow.com/questions/8056900/how-to-print-simplified-Chinese-characters-to-eclipse-console – Berger

+0

Вы пробовали это? [Как напечатать [Упрощенные] китайские иероглифы для консоли Eclipse?] (Http://stackoverflow.com/questions/8056900/how-to-print-simplified-chinese-characters-to-eclipse-console) или [Как поддержка кодировки UTF-8 в Eclipse] (http://stackoverflow.com/questions/9180981/how-to-support-utf-8-encoding-in-eclipse) –

+0

Консоль может отображать правильные китайские символы и проект, java-файл , общее кодирование в конфигурациях отладки все настроено UTF-8, но странно, почему установка китайского символа в представлении аргументов программы, основной метод get args не может быть корректным. – Davy

ответ

0

Похоже, чистый способ не представляется возможным: Passing command line unicode argument to Java code

К сожалению, вы не можете надежно использовать не-ASCII символы с приложениями командной строки, которые используют STDLIB средой выполнения Windows, C, как и Java (и довольно на самом деле все языки, отличные от Windows, для сценариев).

Это потому, что они читают их ввод и вывод, используя локализованные кодовую страницу по умолчанию, который не является UTF, в отличии от любой другой современной операционной системы, которая использует UTF-8.

Хотя вы можете изменить кодовую страницу терминала к чему-то другому используя CHCP команду, поддержка кодировки UTF-8 под CHCP 65001 разбивается на несколько способов, которые могут срабатывать приложения до фатально.

Если вам нужно только японские вы могли бы перейти на кодовую страницу 932 (аналогично с Shift-JIS), установив языковой («языка для не-Unicode приложений» в региональных настройках) в Японию. Это все равно приведет к ошибке для символов, которые не находятся на этой кодовой странице.

Если вам нужно получить не-ASCII символов в командной строке надежно на Windows, вам нужно вызвать функцию API Win32 GetCommandLineW напрямую, чтобы избежать слоя закодировать-к-системы-кода страницы. Возможно, вы захотите сделать это с помощью JNA.

Смежные вопросы