我正在Google App Engine中编写一个Web应用程序。它允许人们从根本上编辑html代码,这些代码作为.html文件存储在blobstore中。
我正在使用fetchData返回byte[]文件中所有字符中的一个。我正在尝试打印到html,以便用户编辑html代码。一切正常!
现在这是我唯一的问题:
转换回字符串时,字节数组存在一些问题。引人注目的引号和几个字符看上去很时髦。(?或日文符号等。)具体来说,我看到的是几个字节,它们的负值引起了问题。
智能引号以-108和-109字节数组形式返回。为什么会这样,如何解码负字节以显示正确的字符编码? 问题来源于stack overflow
字节数组包含采用特殊编码的字符(您应该知道)。将其转换为字符串的方法是:
String decoded = new String(bytes, "UTF-8"); // example for one encoding type 顺便说一句-原始字节的出现可能显示为负十进制,这仅仅是因为java数据类型byte已签名,它涵盖了从-128到127的范围。
-109 = 0x93: Control Code "Set Transmit State" 值(-109)是UNICODE中不可打印的控制字符。因此,UTF-8不是该字符流的正确编码。
0x93“ Windows-1252”中的“智能引号”是您要查找的,因此该编码的Java名称为“ Cp1252”。下一行提供了一个测试代码:
System.out.println(new String(new byte[]{-109}, "Cp1252"));
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。