我需要从浏览器的URL请求中获取一个字符串,然后按请求的文本创建文本图像。我知道Java网络传输的默认编码是“ISO-8859-1”,它可以正常使用“ISO-8859-1”中定义的所有字符。但是当我请求一个多字节的Unicode字符(例如中文或类似¤ж
)时,我需要通过“ISO-8859-1”中的“UTF-8”对其进行解码。
我的代码如:
String reslut = new String(requestString.getBytes("ISO-8859-1"), "UTF-8");
一切都很好,但我发现ISO-8859-1中的一些字符现在没有显示,哪些字符是0x80 - 0xFF(在“ISO-8859-1”中定义),即除了0x00-0x7F之外的字符是从“ISO-8859-1”转换为“UTF-8”时未显示
任何其他方法都可以解决此问题吗?
答案 0 :(得分:3)
我知道Java网络传输的默认编码是“ISO-8859-1”
我不确定你的意思,但这在网络中并不正确。所有内容都在字节上。也许你将它与InputStreamReader
的默认编码混淆,你尝试将字节流作为字符读取。为字节流构造InputStreamReader
时,应使用the constructor which takes the encoding as 2nd argument。 E.g。
Reader reader = new InputStreamReader(connection.getInputStream(), "UTF-8");
如果您实际使用java.net.URLConnection
,则应首先从Content-Type
header过滤编码并将其应用为编码。
答案 1 :(得分:1)
你要做的事情并没有多大意义。大多数ISO-8859-1字符串不能解释为UTF-8字符串。
此外,ISO-8859-1中不能编码中文字符(ISO-8859-1是为西欧语言设计的)。