我的网站上有搜索功能,我们构建查询并发送请求,供应商以 JSON 格式返回响应。供应商抓取我们的网站并从我们的网站捕获数据并发送响应。在我们的设计中,我们使用 GSON 将 JSON 转换为 java 对象。我们使用 UTF-8 作为 Meta 中的字符集。
我有一种情况,响应有时会根据请求对特殊字符进行 Unicode 编码。浏览器以一种奇怪的方式呈现特殊字符的 Unicode 编码。我应该如何解码这个 Unicode 编码?
例如,对于我在响应中看到的特殊字符“ndash”,它编码为“\u2013”
最佳答案
阐明 Unicode 和字符编码之间的区别
统一码
- 是一个抽象概念,旨在识别所有字母(currently > 110 000)。
字符编码
- 定义如何用字节序列表示一个字符
- 一个这样的编码是utf-8它使用 1-4 个字节来表示一个 Unicode 字符
Java 字符串 is 总是 UTF-16
。因此,当您构造一个 String 时,您可以使用以下 String 构造函数
new String(byte[], encoding)
第二个参数应该是客户端发送字符时字符的编码。如果您没有明确定义编码,您将获得默认的系统编码,您可以使用 Charset.defaultCharset();
检查它。
您可以在启动 JVM 时手动将默认编码设置为参数
-Dfile.encoding="utf-8"
尽管很少需要,您也可以使用CharsetDecoder/CharsetEncoder .
关于java - 如何解码java中的Unicode编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415251/