将字节数组转换为String(Java)

我在Google app Engine中撰写网络应用程序。它允许人们基本上编辑html代码,将其存储为blobstore中的.html文件。

我使用fetchData返回一个字节[]的文件中的所有字符。我试图打印到一个html为了让用户编辑html代码。一切工作伟大!

这里是我唯一的问题:

当转换回字符串时,字节数组有一些问题。智能报价和几个字符出来看起来很时髦。 (?或日本符号等)具体来说,我看到有几个字节有负值导致的问题。

智能报价在字节数组中返回为-108和-109。为什么这是,我如何解码负字节以显示正确的字符编码?

字节数组包含特殊编码中的字符(您应该知道)。将它转换为String的方法是:

String decoded = new String(bytes, "UTF-8");  // example for one encoding type

By The Way – 出现的原始字节可能显示为负小数,因为java数据类型字节是有符号的,它覆盖从-128到127的范围。

-109 = 0x93: Control Code "Set Transmit State"

值(-109)是UNICODE中的不可打印控制字符。因此,UTF-8不是该字符流的正确编码。

“Windows-1252”中的0x93是您要查找的“智能引用”,因此该编码的Java名称为“Cp1252”。下一行提供了一个测试代码:

System.out.println(new String(new byte[]{-109}, "Cp1252")); 
http://stackoverflow.com/questions/5673059/converting-byte-array-to-string-java

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将字节数组转换为String(Java)