所以我必须给我的Java应用程序从一个.bat文件调用一些参数。 这样做使参数具有系统的字符集编码,这使得一些字符显示错误。 我试过这个
String titulo; titulo = new String (args[1].getBytes(),"Cp1252");
还尝试了这个清单http://docs.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html中的其他人,他们都没有成功。 我怎么能从Windows charset编码一个string到Java的UTF 8? 提前感谢!
问候,罗德里戈。
编辑:我在.bat中给出的论点是马丁和输出(这是一个JLabel显示)显示此MartÝn。
Windows命令提示符cmd.exe
实际上不使用CP1252。 它的用途显然取决于系统; 在西欧体系中,最有可能的是CP850 。 所以你可以试试这个:
titulo = new String (args[1].getBytes(),"Cp850");
您可以查看cp850的代码表以检查将会发生什么:í是拉丁文1中的字节ED(以及扩展名cp1252),并且cp850中的字节ED是Ý。 因此:如果从Java GUI将“í”打印到cmd.exe
,它将显示为“Ý”。
(但是你似乎正在看到相反的情况:终端上的“í”在GUI中显示为“Ý”..没有任何意义, cmd.exe
应该将字节A1传递给Java,这应该将其解释为“¡”。)