在Java中将字符串从Windows字符集转换为UTF 8

在Java中将字符串从Windows字符集转换为UTF 8,java,windows,character-encoding,cp1252,Java,Windows,Character Encoding,Cp1252,所以我必须给我的Java应用程序提供一些参数,它是从.bat文件调用的。这样做会使参数具有系统的字符集编码,从而使某些字符显示错误。我试过这个 String titulo; titulo = new String (args[1].getBytes(),"Cp1252"); 还尝试了此列表中的其他几个,但没有一个成功。 我还可以如何将Windows字符集中的字符串编码为Java的UTF 8? 提前多谢 你好,罗德里戈 EDIT:我在.bat中给出的参数是Martín,输出

所以我必须给我的Java应用程序提供一些参数,它是从.bat文件调用的。这样做会使参数具有系统的字符集编码,从而使某些字符显示错误。我试过这个

     String titulo;

     titulo = new String (args[1].getBytes(),"Cp1252");
还尝试了此列表中的其他几个,但没有一个成功。 我还可以如何将Windows字符集中的字符串编码为Java的UTF 8? 提前多谢

你好,罗德里戈


EDIT:我在.bat中给出的参数是Martín,输出(是一个JLabel显示)显示这个MartÝn.

Windows命令提示符
cmd.exe
实际上不使用CP1252。它使用什么显然取决于系统;在西欧系统上,最有可能是CP850。所以你可以试试这个:

titulo = new String (args[1].getBytes(),"Cp850");
您可以查看以检查应该发生什么:í是拉丁语1中的字节ED(扩展为cp1252),cp850中的字节ED是Ý。因此:如果您将“í”从Java GUI打印到
cmd.exe
,它将显示为“Ý”


(但您似乎看到了相反的情况:终端的“是”在GUI中显示为“Ý”。这没有意义,
cmd.exe
应该将字节A1传递给Java,Java应该将其解释为“。”)

您是否已经尝试了“UTF-8”而不是“Cp1252”?您说“一些字符显示错误”但没有显示如何显示字符串。我猜问题出在输出端,而输入参数可能是正确的。是的,我做了。。。它给了我不同的(仍然是错误的)字符。谢谢你提醒我使用“UTF8”,没有分数线对于任何想找到可能编码列表的人,新的URL似乎是:那么正确的解决方案是将.bat文件编码为CP850或更改控制台编码,而不是这种可怕的黑客行为。当然。。问题是Windows上的大多数文本编辑器不支持CP850,并且没有办法更改控制台编码。Edit Just read您可以使用
chcp 1252
更改控制台代码页,但这可能会破坏某些控制台应用程序