gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:39:09 24 4
gpt4 key购买 nike

我做了以下“模拟”:

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);
}
}

对于 cp1251 这仅输出一个错误字节 - 在位置 25。
对于 KOI8-R - 一切正常。
对于 cp1252 - 4 或 5 个差异。

这是什么原因,如何克服?

我知道用任何编码将字节数组表示为字符串都是错误的,但这是支付提供商协议(protocol)的要求,所以我别无选择。

更新:在 ISO-8859-1 中表示它有效,我将在 byte[] 部分使用它,并且cp1251 对于文本部分,所以这个问题只是出于好奇

最佳答案

目标集中不支持某些“字节”——它们被替换为 ? 字符。当您转换回来时,? 通常会转换为字节值 63 - 这与之前不同。

关于java - 为什么 new String(bytes, enc).getBytes(enc) 不返回原始字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com