开发者社区> 问答> 正文

将字节数组转换为字符串(Java)

我正在Google App Engine中编写一个Web应用程序。它允许人们从根本上编辑html代码,这些代码作为.html文件存储在blobstore中。

我正在使用fetchData返回byte[]文件中所有字符中的一个。我正在尝试打印到html,以便用户编辑html代码。一切正常!

现在这是我唯一的问题:

转换回字符串时,字节数组存在一些问题。引人注目的引号和几个字符看上去很时髦。(?或日文符号等。)具体来说,我看到的是几个字节,它们的负值引起了问题。

智能引号以-108和-109字节数组形式返回。为什么会这样,如何解码负字节以显示正确的字符编码? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 14:10:07 515 0
1 条回答
写回答
取消 提交回答
  • 字节数组包含采用特殊编码的字符(您应该知道)。将其转换为字符串的方法是:

    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"));

    2020-02-08 14:10:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载