gpt4 book ai didi

java - 触发 REST 调用时无法解释某些汉字

转载 作者:行者123 更新时间:2023-12-02 10:11:41 24 4
gpt4 key购买 nike

希望你们中的一些人已经遇到过这个问题并且已经解决了。

我遇到了一些中文字符的问题,例如('𨍭','𠀪'),因为当触发 REST 调用时,它们会转换为 'ࠀª' 而我们的后端系统无法解释这一点。

我创建了一个简单的 springboot 程序来检查。见下文。字符编码设置为UTF-8

@RequestMapping(value="/chinese", method= RequestMethod.POST, produces="application/json", consumes="application/json;charset=UTF-8")
public String interpret(@RequestBody SampleRESTBean bean ) {

String value = bean.getChineseName();

return value;
}

下面的bean对象

public class SampleRESTBean {

private String chineseName;

public String getChineseName() {
return chineseName;
}

public void setChineseName(String chineseName) {
this.chineseName = chineseName;
}

现在,为了测试(在 Postman 中),我的 JSON 对象设置如下

{"chineseName":"𨍭獲𠀪保意外,另危疾加1/1000" }

当对象位于方法内部时,它看起来像这样਍获ࠀª保意外,另危疾加1/1000

其他汉字被解释,但某些特定字符不被解释。

对于这种问题有解决办法吗?我搜索了很多引用资料,但仍然无法解决这个问题。另外,如果您在使用 JAX-RS 时也有解决方案,因为它会产生相同的问题。

需要您的帮助。谢谢!

最佳答案

一些研究表明:

  • 𨍭 的 unicode 代码点是 u+2836D
  • 𠀪 的 unicode 代码点是 u+2002A

两者都是代码平面 2 中的代码点。

我怀疑问题在于您的客户端或服务器端软件堆栈处理不在 Unicode 代码平面 0(也称为 BMP)中的字符的方式。当数据转换为 char 数组(或 StringStringBuffer >,等等。)一些(旧的)库和许多自定义代码不能正确处理这个问题。

我建议您执行以下操作:

  1. 温习一下您对 Unicode、UTF-16、UTF-8 和“代理对”的理解。
  2. 温习使用 Java 调试器的技能。
  3. 使用调试器了解客户端和服务器端发生的情况1
  4. 找到导致问题的原因后:

    • 如果这是您的代码,请修复它。
    • 如果是其他人的代码,请提交错误报告和/或查找已修复问题的新版本。
<小时/>

1 - 在关键点设置断点并查看传递数据的数据结构中的 char 值。寻找值似乎变得“糟糕”的地方。

关于java - 触发 REST 调用时无法解释某些汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com