Linux中⽂显⽰乱码问题解决⽅法(编码查看及转换)
Linux中⽂显⽰乱码问题解决⽅法(编码查看及转换)
1,⽰例
图中名为⼀个.sql⽂件的⼀段内容,是⼀个数据库⽂件。其在windows中打开显⽰正常,在Linux中,中⽂部分显⽰为乱码。
注意:这个与数据库乱码的情况不同,属于⽂件内容的乱码。
2,分析
Linux系统与windows系统在编码上有显著的差别。Windows中的⽂件的格式默认是GBK(gb2312),⽽Linux系统中⽂件的格式默认是UTF-8。这两个系统就好⽐是中国和⽇本。⽂件就好⽐是⼀个⼈,如果要在另外的国家居住就要办理居住许可证,使⽤他国的证件(编码和字符集),否则是不被允许的⿊户。因此,解决中⽂乱码问题要从编码和字符集着⼿。
⽂件出现编码错误的原因:
当前系统的字符集有问题
某个⽂件的编码有问题
3,解决⽅案
3.1⽅案⼀:从系统的字符集处理
当系统中多个⽂件的内容出现乱码问题,或者中⽂⽂件名显⽰乱码时,就先从系统的字符集处理。
常⽤字符集:
怎么将linux系统改成中文
中⽂
LANG=“zh_CN.UTF-8”
英⽂
LANG=“en_US.UTF-8”
LANG=C
1,查看字符集
<1>查看当前系统默认采⽤的字符集
locale
<2>查看系统当前字符集
echo $LANG
<3>查看系统是否安装中⽂字符集
出现zh开头的,即为安装了中⽂字符集
如未安装,需执⾏: yum -y groupinstall chinese-support
locale -a |grep zh
2,修改系统字符集
<1>修改系统字符集为中⽂
如果前⾯查看到的系统当前的字符集是英⽂,通常修改系统字符集为中⽂即可成功。
临时修改(当前终端⽣效):
export LANG="zh_CN.UTF-8"
永久修改:
echo"export LANG="zh_CN.UTF-8"  >> /etc/proflile
source /etc/profile
<2>查看
echo $LANG
3.2 解决⽅法⼆:从⽂件的编码处理
当系统的字符集为中⽂,⽂件的中⽂部分仍然显⽰乱码,就从⽂件的编码格式处理。
1,查看⽂件编码
<1>查看⽂件编码(vim⽅式)
⽤vim打开⽂件,输⼊:set fileencoding
fileencoding后即为该⽂件编码格式
<2>查看⽂件编码(file⽅式)
file⽂件名
file --mime-encoding ⽂件名
2,修改⽂件的字符集
<1>⽂件的编码转换(vim⽅式)
这个⽅法,仅在vim查看时进⾏编码转换,⽂件实际上本⾝编码并未转换,仅仅只是可看到。
临时转换:
⽤vim打开⽂件,输⼊:set fileencoding=utf-8
永久转换(先确认vimrc位置):
echo"set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936" >> /etc/vimrc
echo"set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936" >> ~/.vimrc
vim会依照fileencodings提供的编码列表,查合适的编码,如果没有到就⽤latin-1(ASCII)编码打开.
<2>⽂件的编码转换(iconv⽅式)
该命令可进⾏⽂件内容的编码转换,并输出到其他位置(⽂件)
命令参数
-f encoding  把字符由原来的编码开始转换
-t encoding  把字符转换为新编码
-
l            列出⽀持的编码字符(可选)
-o file指定输出⽂件(可选)
-c            忽略输出的⾮法字符(可选)
-s            禁⽌输出警告信息(可选)
--verbose    显⽰进度(可选)
{1}.列出当前⽀持的字符编码
iconv -l
{2}.编码转换
基本格式:
iconv  -f 原编码  -t 新编码原⽂件 -o 新⽂件
iconv  -f 原编码  -t 新编码原⽂件  > 新⽂件
⽰例:将UTF-8编码的wx.txt⽂件转换为GB2312编码的
iconv -f UTF-8 -t -
<3>⽂件名编码转换(convmv⽅式)
该命令可转换⽂件名的编码(只是⽂件名编码的转换,⽂件内容不会发⽣变化)安装命令:yum -y install convmv
命令参数
-f          后⾯是原来的编码⽅式
-t          后⾯是要转换为的编码⽅式
-r          递归处理⼦⽂件夹
-i          询问每⼀个转换
--notest    真实的执⾏,在默认情况下只会测试(只能以root权限执⾏)
{1}编码转换
基本格式:
convmv -f 原编码 -t 新编码 --notest(可选)  ⽂件名
convmv -f 原编码 -t 新编码 --notest(可选)  -r ⽬录名
⽰例:将read⽬录下的UTF-8编码的⽂件名转换为GBK编码
convmv -f UTF-8 -t GBK --notest  -r  read/
<4>⽂件的编码转换(enca⽅式)
该⼯具能⾃动识别⽂件编码,且⽀持批量转换
安装命令:yum -y install enca
{1}.编码转换
基本格式 
enca -L 原编码 -x 新编码⽂件名 
enca -L 原编码 -x 新编码⽬录名
⽰例1:把当前⽬录下的所有⽂件都转成utf-8 
enca -L zh_CN -x utf-8 *
⽰例2:检查⽂件的编码 
enca -L zh_
⽰例3:将⽂件编码转换为"UTF-8"编码 
enca -L zh_CN -x
⽰例4:将⽂件编码转换为"UTF-8"编码,并输⼊中
enca -L zh_CN -x UTF-8  <   >

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。