преобразование строки из кодировки Windows в UTF 8 в Java - PullRequest
1 голос
/ 24 февраля 2012

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

     String titulo;

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

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

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

РЕДАКТИРОВАТЬ: Аргумент, который я привожу в .bat, - это Мартин и вывод (который отображает JLabel)показывает это MartÝn.

1 Ответ

2 голосов
/ 24 февраля 2012

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

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

Вы можете посмотреть кодовые таблицы для cp850 , чтобы проверить, что должно произойти: í - это байт ED в латинском 1 (и, соответственно, cp1252), а байт ED в cp850 равен Ý. Следовательно: если вы печатаете «í» из Java GUI в cmd.exe, оно будет отображаться как «Ý».

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

...