Linux下因为系统编码问题造成乱码的解决办法
2016年12月13日18:34:32
--------------------------------
最近一段时间遇到一些润乾报表的应用在linux系统下面乱码的问题,最后检查后都发现是客户的linux系统默认编码设置的不正确造成的,这种原因造成乱码的现象一般都是程序里面写死了的中文字符能正常展现,但是从数据库中取出来的或者从程序中读出来的中文字符就会出现乱码,下面就介绍一下由于linux系统编码设置不正确造成润乾报表应用乱码问题的解决办法。
第一步:检查linux的系统编码。
检查linux的系统编码,确定系统是否支持中文。在linux系统的终端中输入命令:locale,就会看到打印出的系统编码信息。如果打印出来的信息如下,则说明系统的编码不支持中文:
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
第二步:修改系统默认编码设置
如果发现系统编码不支持中文的话,那么就要修改系统编码,使其支持中文,这样润乾报表的中文在应用中才不会乱码。
修改系统编码的方法如下:
/etc/sysconfig/i18n
Controls the system font settings. The language variables are used in /etc/profile.d/lang.sh. An example i18n file:
LANG=”en_US.GB18030″
LANGUAGE=” en_US.GB18030: en_US.GB2312: en_US “
SUPPORTED=” en_US.GB18030: en_US:en:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16″
以上是系统的默认字符集是英文的如果要把字符集设置成支持中文的,可以通过设置这个文件来改变系统的默认字符集。
另外,也可在用户的环境变量或者用户的环境变量文件加入路径变量的声明:
在系统的预处理文件中声明,这样对整个系统起作用:
#vi /etc/profile
在文件尾加入
LC_ALL=”zh_CN.GBK“
export LANG=”zh_CN.GBK“
在用户的预处理文件中声明,对单独的用户起作用:
#vi /root/.bash_profile
在文件尾加入
export LC_ALL=”zh_CN.GBK“
export LANG=”zh_CN.GBK“
以上配置重新启动服务器使更改生效。
第三步:查看修改过的系统默认编码。
通过以上步骤的操作然后重启电脑,再在终端中输入命令:locale,然后就会看到系统的字符集信息变成了如下内容:
这样系统编码就支持中文了,经过以上修改,由于系统默认编码不支持中文造成的乱码就可以顺利解决了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通