Linux 字符编码

Posted walkersss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 字符编码相关的知识,希望对你有一定的参考价值。

1、查看字符编码和语言
使用 locale 命令,语言是en_US(英语_美式),编码是UTF-8

 

2、修改字符编码和语言
对应配置文件

centos7 修改文件 /etc/locale.conf

centos6 修改文件 /etc/sysconfig/i18n

2.1 先看一下修改前的

 

2.2 然后,如改成中文编码GBK编码:

LANG="en_US.UTF-8" 改为 LANG="zh_CN.GBK"

 

然后在不重启的情况下重新加载i18n文件

centos7:

source /etc/locale.conf

centos6:

source /etc/sysconfig/i18n

2.3 修改完再次用 locale 命令 查看 ,发现修改成功

 

好了,修改完成

3.下面是补充知识:
Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。方法如下:

方法1:

vi /etc/sysconfig/i18n

默认为:

LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CN.GBK"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

方法2:
vi /etc/profile

export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"

方法3 :

vi /etc/sysconfig/i18n

更改LANG=\'zh_CN.UTF-8\'

既支持中文


运行locale指令得到当前系统编码设置的详细资料。

一、locale的五脏六腑

1、 语言符号及其分类(LC_CTYPE)
2、 数字(LC_NUMERIC)
3、 比较和排序习惯(LC_COLLATE)
4、 时间显示格式(LC_TIME)
5、 货币单位(LC_MONETARY)
6、 信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)
7、 姓名书写方式(LC_NAME)
8、 地址书写方式(LC_ADDRESS)
9、 电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式(LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

二、理解locale的设置

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。

它们之间有一个优先级的关系:LC_ALL > LC_* > LANG

可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。
————————————————

原文链接:https://blog.csdn.net/lishuoboy/article/details/85279929

【高分,急!】linux下字符编码转换问题

文件是通过FTP上传上去的(vsftp),中文文件名,使用convmv -f GBK -t UTF-8 -r --notest 命令转化所有文件编码为UTF-8,OK!但是由UTF-8转换为GBK的时候出错了(使用命令:convmv -f UTF-8 -t GBK -r --notest)之转换回去部分文件,命令执行完毕报错:To prevent damage to your files, we won't continue.First fix this or correct options!
使用ftp登录,文件夹都是乱码
请问是什么问题啊?这些文件是非常重要的文件,急求解决办法!!谢谢!

参考技术A 互联网上越来越多的网页采用UTF-8编码,UTF-8用1到6个字节编码UNICODE字符,收录了超过10万个字符,BMP部分也有六万多个字符

而在进行编码转换时,我们往往需要转换为GBK编码进行后续处理,很多网页在转换后,会发现出现大量连续的问号:????????

这些恶心的问号是在编码转换阶段引入的,原因是:

GBK字符集只收录了两万多个字符,比UTF-8的字符数量少得多。

转化到GBK编码的时候,就会有编码落到GBK字符集以外,不能转化成GBK编码。这部分字符在转换之后的字符串中都变成了’?’

UTF-8:采用变长字节 (1 ASCII, 2 希腊字母和排版字符, 3 汉字等多字节东亚语言, 4 平面符号和特殊符号等),

其中双字节字符中有一些没有在GBK字符集中,通常来说UTF-8无法识别的字符都是非常生僻的字符,几乎难以遇到,可不用考虑;但有一个字符非常特殊:C2A0

C2A0是UTF8里的排版用空格(区别于ASI =20的空格),这个特殊的字符(unicode序号为0xA0),不在GBK字符集中。却频繁用于xml/html等格式的文件中。大量UTF-编码的网页使用这个字符用作占位的空格。而且不同浏览器对它的处理方式不同:IE浏览器识别出该符号并以空格显示,firefox则替换为xml转义字符   当网页中用C2A0进行文字排版时,我们对网页进行编码转换为GBK时就会出现很多"?"问号
参考技术B 先不要用ftp,直接登录后看一下文件是否完好,可以把LC_ALL切换到zh_CN.GBK或zh_CN.UTF-8分别试。如果文件是好的才有后话。

proftpd 是可以支持文件名内码转换的,vsftpd好象不行,建议用前者。本回答被提问者采纳
参考技术C 为了防止损坏您的文件,将无法继续首先解决这个问题或不正确的选项。 参考技术D 帮顶吧...这个有点难...但是我想问为啥GBK转UTF-8后又要转回来...追问

因为转换为UTF-8后 在windows上看全是乱码
是ftp服务器

追答

samba服务器? 那你试试--nosmart
convmv -f UTF-8 -t GBK -r --notest --nosmart
强制转换...看出来的乱码不?

以上是关于Linux 字符编码的主要内容,如果未能解决你的问题,请参考以下文章

linux字符编码相关知识总结file命令iconv命令

linux字符编码相关知识总结file命令iconv命令

linux怎么修改默认编码

Linux shell 命令 转换文件的字符编码

python 打印Linux中文编码字符

Linux 环境下 javac 编译错误: 编码UTF8的不可映射字符 (编码UTF8/GBK的不可映射字符)