相关疑难解决方法(0)

为什么新的String(bytes,enc).getBytes(enc)不返回原始字节数组?

我做了以下"模拟":

byte[] b = new byte[256];

for (int i = 0; i < 256; i ++) {
    b[i] = (byte) (i - 128);
}
byte[] transformed = new String(b, "cp1251").getBytes("cp1251");

for (int i = 0; i < b.length; i ++) {
    if (b[i] != transformed[i]) {
        System.out.println("Wrong : " + i);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于cp1251这个输出只有一个错误的字节 - 在位置25.
对于KOI8-R- 所有罚款.
适用于cp1252- 4或5个差异.

这是什么原因以及如何克服这个原因?

我知道在任何编码中将字节数组表示为字符串是错误的,但这是支付提供商协议的要求,所以我没有选择权.

更新:ISO-8859-1作品中代表它,我将它用于byte[]部分和cp1251文本部分,所以问题仍然只是出于好奇

java

17
推荐指数
2
解决办法
4825
查看次数

标签 统计

java ×1