如何处理Linux汉字乱码

11 篇文章 0 订阅
  Linux 下,你有没有这样的经历,文本文件里面的汉字显示都是正常的,可一插到数据库里就变成了乱码;文件名在本机显示都很正常,一传到服务器上显示的都变成乱码了,最近就差点被这个问题搞死,最后还算小有收获,这里写一下心得:
   1,首先要知道文件自己的编码方式 ,就是文件是以 utf8 还是以 gbk 等编码方式存储的,因为这是根本。以 xxx dat 文件为例
  用 vi 命令打开 xxx dat 文件
  在命令行模式:输入 set fileencoding 这时会在终端的底部显示文件的编码方式,显示的结果如果是 cp936 (等同于 gbk )或者 utf8 等,那说明文件的编码方式已经被正确判断出来了,如果是 latin1 ,我们就可能要设定 VI fileencodings 这个环境变量的值,打开 vimrc 这个文件, RHEL 的这个文件在 /etc 目录下、 Ubuntu /etc/vim 目录下;或者你也可以建一个~ / vimrc 文件
  然后把里面 merge 成: set fileencodings ucs bom utf 8 cp936 gb18030 big5 euc jp euc kr latin1 然后重新 vi xxx dat
   PS :我们打开文件的时候, VIM 按顺序使用 fileencodings 中的编码进行尝试解码, 如果成功的话, 就使用该编码方式进行解码, 并将 fileencoding 设置为这个值, 如果失败的话, 就继续试验下一个编码。而 latin1 是一种非常宽松的编码方式, 任何一种编码方式得到的文本, latin1 进行解码, 都不会发生解码失败 —— 当然, 解码得到的结果自然也就是理所当然的“乱码”
   2,下一个比较重要的就是LANG这个环境变量了 (关于这个变量的含义和作用自己百度,可以搜出一堆)
  假如 xxx dat 是以 utf8 编码,往数据库里插的时候,我们就需要把 LANG 这个环境变量设成 LANG zh_CN utf8 ,如果 xxx dat 是以 cp936 LANG 就需要设成 LANG zh_CN gbk
  这样在插入的时候,就不需要用程序对文件的字符进行转换,可以直接插入
   PS :用 locale a 命令查看可以把 LANG 设成哪些值, locale m 查看系统支持哪些字符集,假如 locale a 没有你所需要的值,比如 zh_CN gbk ,那就需要手动安装,安装方法也很简单
   a sudo cp /var/lib/locales/supported d/local /var/lib/locales/supported d/local old 【可选,备份】
   b sudo cp /usr/share/i18n/SUPPORTED /var/lib/locales/supported d/local
  编辑 /var/lib/locales/supported d/local 去掉大多数不用的行( locales
   c sudo dpkg reconfigure locales
  编辑 /etc/environment 文件,设置一下要用的 LANG
  也可以用 locale gen 命令设置默认的 locale ,如 sudo locale gen zh_CN UTF 8
   3 ,还有一个同事, LANG 环境变量(这里要注意环境变量生效的范围)也已经改过了,把 windows 的文件重新传到了 Linux 服务器上,通过网页浏览,文件名仍然是乱码,这是因为 LANG 还未在 apache 服务器上生效,重启一下apache服务就可以了
http://it.100xuexi.com/ExtendItem/OTDetail.aspx?id=2c104c57-a00f-4869-856d-2d6236036ac7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值