如何在java中解码Unicode编码?

pus*_*hya 1 java unicode

我在我的网站上搜索我们构建查询并发送请求和响应从供应商回来作为JSON.供应商抓取我们的网站并从我们的网站捕获数据并发送响应.在我们的设计中,我们使用GSON将JSON转换为java对象.我们在Meta中使用UTF-8作为字符集.

我有一种情况,响应有时会根据请求对特殊字符进行Unicode编码.浏览器以奇怪的方式为特殊字符呈现此Unicode编码.我该如何解码这个Unicode编码?

例如,对于特殊字符'ndash',我在响应中看到它编码为'\ u2013'

Joh*_*erg 5

阐明Unicode和字符编码之间的区别

统一

  • 是一个旨在识别所有字母(目前 > 110 000)的抽象概念.

字符编码

  • 定义一个字符如何通过一系列字节来表示
  • 一个这样的编码是utf-8,它使用1-4个字节来表示Unicode字符

始终 一个java String .因此,在构造String时,可以使用以下String构造函数 UTF-16

new String(byte[], encoding)
Run Code Online (Sandbox Code Playgroud)

第二个参数应该是客户端发送字符时的编码.如果您没有明确定义编码,您将获得默认的系统编码,您可以使用它进行检查Charset.defaultCharset();.

您可以在启动JVM时手动将默认编码设置为参数

-Dfile.encoding="utf-8"
Run Code Online (Sandbox Code Playgroud)

虽然很少需要,但您也可以使用CharsetDecoder/CharsetEncoder.