Java 将字符串从代码页1252转换为1250

Java 将字符串从代码页1252转换为1250,java,codepages,cp1252,cp1250,Java,Codepages,Cp1252,Cp1250,如何将一个在代码页1252中解码字符的字符串转换为在代码页1250中解码的字符串 比如说 String str1252 = "ê¹ś¿źæñ³ó"; String str1250 = convert(str1252); System.out.print(str1250); 我想找到这样的convert()函数,打印输出为: ęąśżźćńłó 这些是波兰特有的字符 谢谢您的建议。非常简单: public String convert(String s) { return new St

如何将一个在代码页1252中解码字符的
字符串
转换为在代码页1250中解码的
字符串

比如说

String str1252 = "ê¹ś¿źæñ³ó";
String str1250 = convert(str1252);
System.out.print(str1250);
我想找到这样的
convert()
函数,打印输出为:

ęąśżźćńłó
这些是波兰特有的字符


谢谢您的建议。

非常简单:

public String convert(String s) {
    return new String(s.getBytes("Windows-1252"), "Windows-1250");
}

请注意,
System.out.print()
可以引入。但是,
System.console().writer().print()
应该正确地输出它。

这个问题的背景是什么?但是,由于某种原因,它会打断“ś”和“ź”。也许是因为它们不在Windows-1250中?不确定,因为我没有使用这些编码。@Sergey:是的,这些字符在中不存在。谢谢你的回答。它几乎起作用了。如果字符大于256,则无法正确转换为字节(已更改为63-“?”)。因此,需要对字符串的每个字符进行额外的检测。我发现下面的代码可以工作:bytes[]bytes=text.getBytes(“Windows-1252”);String text1250=新字符串(字节,“Windows-1250”);StringBuffer=新的StringBuffer(text1250);for(int i=0;i256)buffer.replace(i,i+1,text.substring(i,i+1));}text1250=buffer.toString()@rybz,我会将其更改为
if(buffer.charAt(I)='?'&&text.charAt(I)!='?')
-也就是说,如果它不是'?'而是'?',则使用原始字符。这样做的好处是,即使某些不超过256的字符也被破坏,也能正常工作。@Sergey,这可能是一个很好的观点。我还没有找到一个角色的案例