admin管理员组文章数量:1550399
两个系统之间通讯时,遇到报错:input is not proper UTF-8, indicate encoding
翻译:输入的是utf-8不正确表示的编码
解决方案:
1.首先检查服务器系统编码(linux系统服务器): echo $LANG 的字符编码是哪个
2.再检查自己Java程序的字符编码是用的哪个
3.再确认一下xml报文头的编码是哪个(创建xml的时候,字符集一定要和xml报文头的字符集一致)
三者相同,应该就没有问题了
【前两个可以选择修改服务器系统的字符集或者修改java代码的字符编码,第三个直接手动修改xml报文头即可】
还存在一种情况: 请求报文缺少XML头。
约定是GBK编码,且对方发送过来的十六进制的报文,显示的数据编码无误(通过终端汉字能显示),但是stderr仍报错:input is not proper UTF-8, indicate encoding**
可能是我们系统默认解析是UTF-8;故在请求报文加上XML头时( <?xml version="1.0" encoding="GBK"?> ),解析正常。
PS:linux系统修改字符集
1.echo $LANG #查看系统当前使用的字符集
2.locale -a|grep zh #locale -a可以显示系统所有支持的字符集,这条命令可以找出和中文相关的字符集,方便后面修改使用
3.vim /etc/sysconfig/i18n #更改字符集所在的配置文件,使用#号注释掉之前的英文字符集,重新添加一行LANG=zh_CN.gb18030
4.source /etc/sysconfig/i18n #执行这条命令,让前面的修改生效 ((注意改好之后重启一下系统))
5.echo $LANG #查看当前字符集是否已经修改成功
(临时修改LANG可以使用命令:export LANG=zh_CN.gb18030)
版权声明:本文标题:input is not proper UTF-8, indicate encoding(输入的是utf-8不正确表示的编码) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727245818a1104611.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论