希望有些人已经遇到此问题并已解决。
我一直遇到一些中文字符(如('','')的问题,因为触发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;
}
现在,要测试(在邮递员中),我的JSON对象设置如下
{"chineseName":"獲保意外,另危疾加1/1000" }
当对象位于方法内部时,它看起来像这样 获ࠀª保意外,另危疾加1/1000
其他汉字会被解释,但某些特定字符不会被解释。
是否存在针对此类问题的解决方案?我搜索了很多参考文献,但仍然无法解决此问题。另外,如果您在使用JAX-RS时也有解决方案,因为它会产生相同的问题。
请需要您的帮助。谢谢!
答案 0 :(得分:1)
一些研究表明:
两者都是代码平面2中的代码点。
我怀疑问题出在您的客户端或服务器端软件堆栈正在处理不在Unicode代码平面0(又称为BMP)中的字符的方式。当数据转换为char
(或char
,String
等数组)时,这些值表示为2个StringBuffer
值。一些(旧)库和一个许多自定义代码无法正确处理此问题。
我建议您执行以下操作:
一旦找到导致问题的原因:
1-在关键点设置断点,并查看传递数据的数据结构中的char
值。寻找值似乎在哪里变“坏”。