【问题标题】:How to convert integer byte array into string with encoding “ISO-8859-1”? [duplicate]如何将整数字节数组转换为编码为“ISO-8859-1”的字符串? [复制]
【发布时间】:2020-06-14 15:21:58
【问题描述】:

例如下面给出的字节数组数据,如何将其转换为编码为"ISO-8859-1"的字符串?

[8, 98, 118, 114, -119, -119, 89, 66, 68, 89, -110, 68, 55, 25, 33, 99, 22, 49, -125, -103, 120, 8, -103, 67, 117, -110, 86, 19, 84, 83, 39, 48, 49, 120, 86, 88, -124, 57, 50, -112, 87, 72, 16, 56, 51, 96, 98, 48, -119, 96, 1, 24, 65, -111, 105, 121, -119, 88, 7, -119, -126, -109, 9, 65, -122, 86, 81, -105, 5, 81, -127, 72, -107, 6, 118, 104, 68, 68, 84, -103, 103, 36, 3, -123, -104, -108, -107, 64, 48, 56, 40, 16, -108, -124, -109, 35, 84, 39, 33, 36, -128, 19, 53, 48, 120, 68, 8, 21, 52, -122, 102, 57, 68, 86, 38, 36, -128, 68, 36, 17, 39, 40, 0, 56, 34, 57, -106, 114, -106, 120, 2, 50, 87, -124, 1, -110, -108, 102, 114, -125, 39, 1, 87, 16, -119, -121, 35, 52, -119, -108, -120, 55, 82, -111, 9, 104, -109, 4, 3, 22, -120, 119, 83, 112, 5, 24, 33, 118, 55, -123, 50, 103, -103, 100, -124, -104, 54, 6, 6, 55, 20, 64, 41, 114, 98, 82, 9, 6, 102, 99, 35, 67, 23, 16, -106, 35, -128, 69, 35, 24, 84, 16, 25, 56, -124, 88, 85, 23, 96, 23, 41, 54, 96, -107, -119, -125, 88, 34, 67, 70, 8, -105, 35, 16, 24, 0, -125, 1, 82, 101, 104, 20, 5, 22, -109, 41, 18, 9, 25, 8, -112, 85, 0, 36, 65, 17, 105, 65, 52, 57, 119, 16, 53, 5, 2, 115]

【问题讨论】:

标签: java arrays string encoding iso-8859-1


【解决方案1】:

字符串在 Java 中没有编码(或者从技术上讲,它们有,但始终是 UTF-16)。

可以(并且可能想要做的)是使用您指定的编码从该byte[] 生成一个String,您只需调用this constructor 即可:

byte[] bytes = getTheByteArrayFromSomewhere();
String text = new String(bytes,  "ISO-8859-1");

对于standard character sets 的小集合,您还可以使用具有明显名称的枚举:

String text = new String(bytes, StandardCharsets.ISO_8859_1);

【讨论】:

    【解决方案2】:
     byte[] bytes = {8, 98, 118, 114, -119, -119, 89, 66, 68, 89, -110, 68, 55, 25, 33, 99, 22, 49, -125, -103, 120, 8, -103, 67, 117, -110, 86, 19, 84, 83, 39, 48, 49, 120, 86, 88, -124, 57, 50, -112, 87, 72, 16, 56, 51, 96, 98, 48, -119, 96, 1, 24, 65, -111, 105, 121, -119, 88, 7, -119, -126, -109, 9, 65, -122, 86, 81, -105, 5, 81, -127, 72, -107, 6, 118, 104, 68, 68, 84, -103, 103, 36, 3, -123, -104, -108, -107, 64, 48, 56, 40, 16, -108, -124, -109, 35, 84, 39, 33, 36, -128, 19, 53, 48, 120, 68, 8, 21, 52, -122, 102, 57, 68, 86, 38, 36, -128, 68, 36, 17, 39, 40, 0, 56, 34, 57, -106, 114, -106, 120, 2, 50, 87, -124, 1, -110, -108, 102, 114, -125, 39, 1, 87, 16, -119, -121, 35, 52, -119, -108, -120, 55, 82, -111, 9, 104, -109, 4, 3, 22, -120, 119, 83, 112, 5, 24, 33, 118, 55, -123, 50, 103, -103, 100, -124, -104, 54, 6, 6, 55, 20, 64, 41, 114, 98, 82, 9, 6, 102, 99, 35, 67, 23, 16, -106, 35, -128, 69, 35, 24, 84, 16, 25, 56, -124, 88, 85, 23, 96, 23, 41, 54, 96, -107, -119, -125, 88, 34, 67, 70, 8, -105, 35, 16, 24, 0, -125, 1, 82, 101, 104, 20, 5, 22, -109, 41, 18, 9, 25, 8, -112, 85, 0, 36, 65, 17, 105, 65, 52, 57, 119, 16, 53, 5, 2, 115};
            String s = new String(bytes, "ISO-8859-1");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多