Java 将字符串从代码页1252转换为1250
如何将一个在代码页1252中解码字符的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
字符串
转换为在代码页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;iif(buffer.charAt(I)='?'&&text.charAt(I)!='?')
-也就是说,如果它不是'?'而是'?',则使用原始字符。这样做的好处是,即使某些不超过256的字符也被破坏,也能正常工作。@Sergey,这可能是一个很好的观点。我还没有找到一个角色的案例