java - 如何解码java中的Unicode编码?

标签 java unicode

我的网站上有搜索功能,我们构建查询并发送请求,供应商以 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/

相关文章:

Python unicode 正则表达式不适用于大字符串

c++ - unicode utf-16代理对打印问题

javascript - 使用正则表达式匹配 javascript 中的国际/unicode 字母数字字符?

java - Spring Batch : java. io.IOException:组合 MultiResourceItemWriter 和 FlatFileItemWriter 时流关闭异常

java - 如何在 Servlet(从 Android 应用程序发送)中获取数据?

java - 冒泡排序作业出错

java - 如何使用Guice Assisted Inject来实现这个工厂模式?

java - JAVA写入超过5000行后Excel写入变慢

macos - 在 os x 上的 IntelliJ 11.1 中,使用 emacs 模式 M-B 输入 unicode 积分

css - Unicode 表情符号字符根据浏览器使用不同的图像/字体