1

我需要将标准字符串转换为 CP1250,每个字符只有一个字节,因此例如波兰语 char 'ł' 应该被解析为 0xB3,没有两个字节的 unicode。当我试图做这样的事情时:

byte[] array = "ała".getBytes();
s = new String(array, 0, array.length, Charset.forName("CP1250"));

接下来如果我在做 s.getBytes(); 它返回比字母更多的字节,对于 'ł' 是 2 个字节,如 unicode。我需要将每个字符串转换为从它们中获取的字节,就像这里的 CP1250 代码: https ://pl.wikipedia.org/wiki/Windows-1250#Tablica_kod.C3.B3w

4

2 回答 2

1

通过在将字符串转换为字节时提供字符集来做到这一点:

    byte[] array = "ała".getBytes("CP1250");
于 2016-03-03T12:02:19.177 回答
0

您正在String使用 Java 的默认字符集将 a 转换为字节数组,不管它是什么(它可能是 UTF-8,也可能是其他东西。这是一个可配置的选项)。然后您将这些字节转换回 a String,但告诉转换器这些字节被编码为 CP1250,它们可能不是。所以你最终可能会得到一个损坏的String. 但无论哪种方式,你最终还是会得到 a String,这不是你想要的。

您需要告诉getBytes()您希望将字节编码为 CP1250,例如:

byte[] array = "ała".getBytes("CP1250");

或者:

byte[] array = "ała".getBytes(Charset.forName("CP1250"));
于 2016-03-03T20:25:39.270 回答