TongWeb下乱码问题解决思路
侧边栏壁纸
  • 累计撰写 88 篇文章
  • 累计收到 168 条评论

TongWeb下乱码问题解决思路

萧瑟
2021-09-12 / 0 评论 / 78 阅读 / 正在检测是否收录...

之前项目上用到TongWeb,部署项目后出现乱码问题,刚好找到解决方案,作者的文章也失联,刚好整理过相关文档,顺便做个记录,防止失联。

原作者文章地址:https://blog.csdn.net/realwangpu/article/details/109540781

解决乱码问题主要看以下几项配置, 重点要了解这些编码设置所起的作用

注:乱码问题看TongWebserver.log日志基本没用,重点是看应用采用的编码以及操作系统、TongWeb的编码设置。

1.Linux下先通过local -a查看操作系统是否有相应的中文字符集。

2.Linux下再看环境变量LANG值,通常为zh_CN.GBKzh_CN.UTF-8。通过echo $LANG查看,通过export LANG=zh_CN.GBK来设置。

3.JDK参数-Dfile.encoding=GBK,加在TongWeb启动脚本中。

以上两项是JDK的默认编码,-Dfile.encoding优先于LANG环境变量。

同时还有一参数-Dsun.jnu.encoding=UTF-8,sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,就应当多考虑一下 sun.jnu.encoding

4.TongWeb 的Web容器 requestresponse默认编码GBK

5.对于URL的编码,在TongWebhttp通道中设置,默认GBK。“URL编码格式”相当于tomcatURIEncoding。“uri处理”相当于tomcatuseBodyEncodingForURI
tomcat下不乱码,而在TongWeb下乱码,则可参考tomcat配置来配置TongWeb


6.数据库存入数据乱码,还要看数据本身的编码设置。另外不同数据的JDBC  url也有编码设置。
如:MySQLjdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8

7.重点查看应用编码规则,一定要了解应用的编码用法。
主要看应用filter中设置的编码:request.setCharacterEncoding("UTF-8")
应用代码中有没有做转码,如: new String(test.getBytes("iso-8859-1"),"utf-8");

8.日志乱码主要原因:
(1)telnet终端编码与日志输出的编码不一致导致,把日志下载到windows下用Notepad++等工具查看,并进行UTF-8GBK转码试试。
(2) log4j编码设置不对,注意参数中的log4j.appender.file.encoding=UTF-8

0

评论 (0)

取消