Linux中文显示乱码问题解决方法(编码查看及转换)

Linux中文显示乱码问题解决方法(编码查看及转换)

1,示例

图中名为一个.sql文件的一段内容,是一个数据库文件。其在windows中打开显示正常,在Linux中,中文部分显示为乱码。

注意:这个与数据库乱码的情况不同,属于文件内容的乱码。

2,分析

Linux系统与windows系统在编码上有显著的差别。Windows中的文件的格式默认是GBK(gb2312),而Linux系统中文件的格式默认是UTF-8。这两个系统就好比是中国和日本。文件就好比是一个人,如果要在另外的国家居住就要办理居住许可证,使用他国的证件(编码和字符集),否则是不被允许的黑户。因此,解决中文乱码问题要从编码和字符集着手。

文件出现编码错误的原因:
当前系统的字符集有问题
某个文件的编码有问题

3,解决方案

3.1方案一:从系统的字符集处理

当系统中多个文件的内容出现乱码问题,或者中文文件名显示乱码时,就先从系统的字符集处理。

常用字符集:

中文
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编码的test01.txt
iconv -f UTF-8 -t GB2312 wx.txt -o test01.txt

<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_CN test.txt
        
示例3:将test.txt文件编码转换为"UTF-8"编码 
      enca -L zh_CN -x UTF-8 test.txt

示例4:将test.txt文件编码转换为"UTF-8"编码,并输入test2.txt中
      enca -L zh_CN -x UTF-8  < test.txt  > test2.txt

原文地址:https://www.cnblogs.com/lizm166/p/12598731.html

时间: 2024-10-25 19:55:54

Linux中文显示乱码问题解决方法(编码查看及转换)的相关文章

DOS命令行窗口mysql中文显示乱码问题解决方法

MySQL的默认编码是Latin1,不支持中文,如何修改MySQL的默认编码呢,下面以 gbk为例来说明(这里只介绍Windows环境下) 1.中止MySQL服务(打开控制面板-->管理工具-->服务)找到MySQL,右键选择停止. 或者在cmd中敲入net stop mysql ,(mysql是服务名) 2.打开MySQL安装目录,找到my.ini文件. 3.打开my.ini文件 修改两个地方 或者,新建一个文件,my.ini [client]default-character-set=ut

Linux中文显示乱码?如何设置centos显示中文

Linux中文显示乱码?如何设置centos显示中文 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的.以centos为例,操作Linux怎么查看语言,设置修改语言 1.查看当前系统语言 登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 2.查看安装的语言包 查看是否有中文语言包可以在终端输入 lo

Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】

转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录名及文件名中的中文显示为“??”. 原因: FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码. 解决方案: 1.将中文的目录或文件名转为iso-8859-1编码的字符.参考代码: 复制代码 代码如下: String name="目录名或文件名"; name=

c#写入Mysql中文显示乱码 解决方法 z

mysql字符集utf8,c#写入中文后,全部显示成?,一个汉字对应一个? 解决方法:在数据库连接字符串中增加字符集的说明,Charset=utf8,如 MySQLConnection con = new MySQLConnection("server=127.0.0.1;uid=root;pwd=;database=test;Charset=utf8"); 搞定 c#写入Mysql中文显示乱码 解决方法 z,布布扣,bubuko.com

linux 中文显示乱码解决办法

linux 中文显示乱码解决办法, 其实是有多种情况的, 有一部分是由于终端默认的设置造成的 vi /etc/sysconfig/i18n将内容改为LANG="en_US.UTF-8"SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"将内容改为LANG="zh_CN.GB18030"LANGUAGE="zh_

linux系统如何更改字符集的支持,解决Linux中文显示乱码使centos显示中文

linux系统如何更改字符集的支持 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的.咗嚛本经验以centos为例,操作Linux怎么查看语言,设置修改语言 主要是更改/etc/locale.conf文件.centos7之前的版本的配置文件为:/etc/sysconfig/i18n 查看当前系统语言 登陆linux系统打开操作终端之后,输入 

putty中文显示乱码解决方法

putty工具是开源免费的远程ssh工具,界面整洁,小巧好用,配合同样小巧整洁且免费的WinSCP的ftp功能,绝对是linux后端开发的利器 说下解决putty中文显示乱码的问题 1.更改linux系统的语言环境 vim ~/.bash_profile 在最后添加一行   LANG="zh_CN.UTF-8" :wq 退出保存 最后运行 source ~/.bash_profile 2.修改putty显示 首先ssh连接到你修改过~/.bash_profile 的服务器,登陆后,右键

数据库中文显示乱码问题解决办法

Ubuntu 14.04    mysql 5.5  python 2.7 从网页爬取数据存入数据库显示乱码 以root权限登录 修改mysql配置文件 /etc/init.d/my.cnf 找到[client]在下面加入 default-character-set=utf8 找到 [mysqld_safe]在下面加入 default-character-set=utf8 找到[mysqld]在下面加入 default-character-set=utf8 init_connect='SET N

linux二进制显示乱码解决方法

针对与不小心看了二进制文件后bash显示乱码的问题,如果是文件中出现乱码则需要调整语言字符集或者终端的语言字符集[[email protected] nagios]# env|grep LANGLANG=zh_CN.UTF-8[[email protected] nagios]# 在linux中cat二进制文件出现乱码的解决方法:1.按键盘ctrl+v后再按ctrl+o回车2.输入echo -e '\xf'回车echo -e '\xe'切回上个语言显示 原文地址:https://blog.51c