美文网首页
解决在Linux环境下访问webservice发送中文乱码问题的

解决在Linux环境下访问webservice发送中文乱码问题的

作者: 可爱傻妞是我的爱 | 来源:发表于2018-03-20 17:09 被阅读449次

    首先,看在windows环境下正常显示中文的原因:打开cmd窗口,输入:chcp你会发现输出

    活动代码页: 936

    查阅936的意义:它指明了当前系统使用的编码,936 代表GBK 扩展的EUC-CN 编码( GB 2312-80编码,包含 6763 个汉字)到Unicode (GB13000.1-93)中定义的20902个汉字,即中国大陆使用的是简体中文zh_CN。

    这说明,在windows下是默认采用的gbk方式编码,短信也没有中文乱码。

    接下来再看linux环境下的中文编码格式:输入命令cat /etc/sysconfig/i18n

     你会发现输出默认为:

    LANG="en_US.UTF-8"

    SYSFONT="latarcyrheb-sun16"

    这说明,Linux默认支持的中文编码为UTF-8,webservice也是以该环境中的编码格式发送的字段。

    所以出现了上图中的状况。

    解决方式:修改Linux的中文编码。

    执行命令:

    vi /etc/sysconfig/i18n

     将内容替换如下:

    LANG="zh_CN.GBK"

    SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

    SYSFONT="latarcyrheb-sun16"

     修改保存后运行命令locale发现依然是utf-8编码格式。。

    注意,此时不要着急reboot(linux重启系统命令,类似笔记本电脑重启系统,需要一段时间,有造成硬件损坏风险哦),将登陆用户先logout再login(登出后再登入),再次运行locale命令,你会发现被修改成GBK了:

    LANG=zh_CN.GBK

    LC_CTYPE="zh_CN.GBK"

    LC_NUMERIC="zh_CN.GBK"

    LC_TIME="zh_CN.GBK"

    LC_COLLATE="zh_CN.GBK"

    LC_MONETARY="zh_CN.GBK"

    LC_MESSAGES="zh_CN.GBK"

    LC_PAPER="zh_CN.GBK"

    LC_NAME="zh_CN.GBK"

    LC_ADDRESS="zh_CN.GBK"

    LC_TELEPHONE="zh_CN.GBK"

    LC_MEASUREMENT="zh_CN.GBK"

    LC_IDENTIFICATION="zh_CN.GBK"

    LC_ALL=

    但此时你有可能发现打印的日志又乱码了,憋着急,不是说你的系统不支持gbk显示,而是你要修改你ssh客户端的编码跟系统编码gbk一致就ok啦~~~

    修改成功之后,经测试,发现通过部署到Linux环境上后,发送的短信中文显示也不乱码了。至于为何手机接收短信不太支持UTF-8,具体原因没有深究。

    其实这跟我前段时间做的iReport报表问题差不多,这些问题的出现都是由于windows和linux的一些环境差异造成的。毕竟一般情况下,开发工作是在windows下完成的,然而真正部署上线的是在linux环境中

    相关文章

      网友评论

          本文标题:解决在Linux环境下访问webservice发送中文乱码问题的

          本文链接:https://www.haomeiwen.com/subject/irmbqftx.html