作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试过转换字节cp1252
至字节utf8
但一切都是徒劳。
例如:我有 byte[] 0xB5(cp1252)
我想转换为 byte[] 0xC3, 0xA0(utf8)
.
我想要这样: µ --> à.
我的代码但它不起作用:
public void convert(){
try {
byte[] cp1252 = new byte[]{(byte) 0xB5};
byte[] utf8= new String(cp1252, "CP-1252").getBytes("UTF-8");
// values of utf8 array are 0xC2, 0xB5 not 0xC3, 0XA0 as I expected
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
最佳答案
您应该使用“Cp1252”
作为代码页,而不是“CP-1252”
public void convert(){
try {
byte[] cp1252 = new byte[]{(byte) 0xB5};
byte[] utf8= new String(cp1252, "Cp1252").getBytes("UTF-8");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
正如所指出的0xB5
,您尝试解码的不是代码页 1252,上面的代码不会给您所需的结果。
如果您运行以下代码,您将看到没有编码可以执行您想要执行的转换
try {
byte[] u = new byte[]{(byte) 0xC3, (byte) 0xA0};
SortedMap m = Charset.availableCharsets();
Set k = m.keySet();
Iterator i = k.iterator();
String encoding = "";
while (i.hasNext()) {
String e = (String) i.next();
byte[] cp = new String(u, "UTF-8").getBytes(e);
if (cp[0] == (byte) 0xB5)
{
encoding = e;
break;
}
}
System.out.println(encoding);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
关于java - 如何在java中将字节CP-1252转换为字节UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30162618/
我是一名优秀的程序员,十分优秀!