我有编码和解码特定字节值的问题。 我正在实现一个应用程序,在那里我需要获取string数据,对其进行一些处理,并返回另一个string。
我目前通过String.getbytes()
获取byte[]
值,做适当的操作,然后通过构造函数String(byte[] data)
返回String。 问题是,当一些字节有特定的值,例如-120
, -127
等,构造函数中的编码返回?
字符,即字节值63
。 据我所知,这些值是不能在Windows上打印的,关于这样的事实,即Java中的-120
是10001000
,根据ASCII表是\b
字符
有没有字符集,我可以使用正确的代码和解码每个字节值(从-128到127)?
编辑:我也会说, ISO-8859-1
字符集工作得很好,但不编码语言特定的字符,如ąęćśńźżół
您似乎对编码有一些困惑, 而不是针对Java ,所以我会尽力帮助解决一些问题。
不存在使用从-128到0的代码点的任何字符集和编码。如果将该字节视为无符号整数,则得到范围0-255,该范围对于所有cp- *和isoo-8859均有效 – * charsets。
ASCII字符在0-127范围内,无论您将int视为有符号还是无符号,它们都显示为有效。
UTF-8字符的范围是0-127, 或者是双字节字符,第一个字节的范围是128-255。
你提到了一些波兰字符,所以不用ISO-8859-1,你应该编码为ISO-8859-2或(最好) UTF-8 。