我做了以下"模拟":
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 ×1