我应该使用哪个字符集来编码和解码8位值?

时间:2014-05-06 10:13:11

标签: java windows encoding character-encoding

我遇到编码和解码特定字节值的问题。我正在实现一个应用程序,我需要获取String数据,对它进行一些操作并返回另一个String。

我目前正在通过byte[]获取String.getbytes()值,进行适当的操作,然后通过构造函数String(byte[] data)返回String。问题是,当某些字节具有特定值时,例如-120-127等,构造函数中的编码返回?字符,即字节值63。据我所知,这些值是无法在Windows上打印的值,因为Java中的-12010001000,根据{\b字符{ {3}}

是否有任何字符集,我可以使用它来正确编码和解码每个字节值(从-128到127)?

编辑:我还要说,ISO-8859-1 charset工作得很好,但不编码特定于语言的字符,例如ąęćśńźżół

1 个答案:

答案 0 :(得分:1)

您似乎对编码感到困惑,并非特定于Java ,所以我会尝试帮助清除其中一些。

不存在使用从-128到0的代码点的任何字符集或编码。如果将字节视为无符号整数,则得到0-255的范围,该范围有效对于所有cp- *和isoo-8859- * charsets。

ASCII字符在0-127范围内,因此无论您将int视为有符号还是无符号,它都显示为有效。

UTF-8字符 ,范围为0-127 双字节字符,第一个字节的范围为128-255。

您提到了一些波兰语字符,因此您应该编码为 ISO-8859-2 或(最好) UTF-8 ,而不是ISO-8859-1。