"u00F6"不是字节数组。这是一个包含单个字符的字符串。而是执行以下测试:
public static void main(String[] args) throws Exception { byte[] b = new byte[] {(byte) 0x00, (byte) 0xf6}; String s = new String(b, "ISO-8859-1"); // decoding byte[] b2 = s.getBytes("ISO-8859-1"); // encoding System.out.println("Are the bytes equal : " + Arrays.equals(b, b2)); // true}
要检查任何字节是否正确,只需对所有字节的循环代码进行改进:
public static void main(String[] args) throws Exception { byte[] b = new byte[256]; for (int i = 0; i < b.length; i++) { b[i] = (byte) i; } String s = new String(b, "ISO-8859-1"); byte[] b2 = s.getBytes("ISO-8859-1"); System.out.println("Are the bytes equal : " + Arrays.equals(b, b2));}
ISO-8859-1是一种标准编码。因此,所使用的语言(Java,C#或其他任何语言)都没有关系。
这是Wikipedia参考,声称每个字节都被覆盖:
在1992年,IANA注册了字符映射图ISO_8859-1:1987,它以其首选的MIME名称ISO-8859-1(请注意ISO
8859-1的额外连字符)而广为人知,ISO 8859-1是ISO 8859-1的超集。在互联网上使用。该映射将C0和C1控制字符分配给未分配的代码值,
从而通过每个可能的8位值提供256个字符。
(强调我的)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)