1

所以我必须为从 .bat 文件调用的 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 字符集编码为 Java 的 UTF 8?提前非常感谢!

问候,罗德里戈。

编辑:我在 .bat 中给出的参数是 Martín,输出(显示的 JLabel)显示了这个 Martín。

4

1 回答 1

2

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,Java 应该将其解释为“¡” ..)

于 2012-02-24T19:49:17.550 回答