2012-02-24 1 views
1

, поэтому я должен привести некоторые аргументы в свое Java-приложение, которое вызывается из .bat-файла. При этом аргументы имеют кодировку кодировки системы, что приводит к неправильному отображению некоторых символов. Я попробовал этотпреобразование строки из Windows charset в UTF 8 в Java

 String titulo; 

    titulo = new String (args[1].getBytes(),"Cp1252"); 

также попытался с несколькими другими из этого списка http://docs.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html и ни один из них не удалось. Как еще я могу кодировать строку из кодировки Windows в UTF 8 Java? Большое спасибо!

С уважением, Родриго.

EDIT: Аргумент, который я даю в .bat, является Martín, а вывод (который является отображением JLabel) показывает этот Mart.

+0

Вы уже пробовали «UTF-8» вместо «Cp1252»? – Hamed

+0

Вы сказали, что «некоторые символы отображаются неправильно», но не отображали, как вы показываете строку. Я предполагаю, что проблема на стороне вывода, в то время как входные параметры, вероятно, правильные. –

+0

Да, я сделал ... Это дало мне разные (все еще неправильные) персонажи. Спасибо, что напомнили мне, хотя – rMaero

ответ

2

Командная строка Windows cmd.exe фактически не использует CP1252. То, что оно использует, по-видимому, зависит от системы; по западноевропейским системам это, скорее всего, CP850. Таким образом, вы можете попробовать это:

titulo = new String (args[1].getBytes(),"Cp850"); 

Вы можете посмотреть на code tables for cp850, чтобы проверить, что должно произойти: í является байт ED на латинском 1 (и, соответственно, CP1252), и байт ED в cp850 является Ý , Поэтому: если вы печатаете «í» с графического интерфейса Java до cmd.exe, он будет отображаться как «Ý».

(Но вы, кажется, видите обратное: «í» из терминала отображается как «Ý» в графическом интерфейсе .. это не имеет смысла, cmd.exe должен передать байты A1 на Java, которые должны интерпретировать это как «¡» ..)

+0

Тогда правильным решением было бы кодирование .bat-файла как CP850 или изменение кодировки консоли, а не этого ужасного взлома. –

+0

Несомненно, проблема в том, что большинство текстовых редакторов в Windows не поддерживают CP850, и нет возможности изменить консольную кодировку. ** Редактирование ** Просто прочитайте, вы можете использовать 'chcp 1252' для изменения кодовой страницы консоли, но это может сломать некоторые консольные приложения – Joni

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