Linux字符集详解

这篇具有很好参考价值的文章主要介绍了Linux字符集详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux字符集详解

计算机中处理和储存信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照某种规则将字符存储在计算机中,如’a’用97表示,称为"编码";反之,将计算机中的二进制数解析显示出来,称为"解码"。在解码过程中,如果使用了错误的解码规则,就会产生乱码。

 文章来源地址https://www.toymoban.com/news/detail-459433.html

字符编码和字符集

字符编码

字符编码是一种法则,在数字与字符之间建立的对应关系。

不同的国家有不同的字符,包含的文字、标点符号、图形符号各有不同。

常见的字符编码有ASCII,GBK,GB18030,Unicode等。

字符集

字符是文字和符号的总称,字符集是字符的集合,是数字与字符的对照表。

用ASCII编码的字符集称之为ASCII字符集,用GBK编码的字符集称之为GBK字符集。

国际编码

为了解决传统的字符编码方案的局限,1994年发布了Unicode(国际编码、统一码、万国码、单一码、通用码),它是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 将全世界所有的字符统一编码,再也不存在字符集不兼容和字符转换的问题。

Unicode 有以下三种编码方式:

1)UTF-8:兼容ASCII编码;拉丁文、希腊文等使用两个字节;包括汉字在内的其它常用字符使用三个字节;剩下的极少使用的字符使用四个字节。

2)UTF-16:对相对常用的60000余个字符使用两个字节进行编码,其余的使用4字节。

3)UTF-32:固定使用4个字节来表示一个字符,存在空间利用效率的问题。

 

汉字的编码

支持汉字(简体中文)的编码有GB2312、GB13000、GBK、GB18030和Unicode(UTF-8、UTF-16、UTF-32)。

汉字的编码

支持汉字(简体中文)的编码有GB2312、GB13000、GBK、GB18030和Unicode(UTF-8、UTF-16、UTF-32)。

  1. GB2312

    仅包含大部分的常用简体汉字,但已经不能适应现在的需要

  2. GB13000

    由于GB2312的局限性,国家标准化委员会制定了GB13000编码; 但由于当时的硬件和软件都已经支持了GB2312,而GB13000与GB2312完全不兼容,所以没有能够得到大范围的推广使用

  3. GBK

    有了GB13000的教训,中国国家标准化委员会制定了GBK标准,并兼容了GB2312标准,同时在GB2312标准的基础上扩展了GB13000包含的字; 由于该标准有微软的支持,得到了广泛的应用

  4. GB18030

    GB18030编码比GBK又新增了几千个汉字,但由于码位不足使用了2byte与4byte混合编码方式,这给软件开发增加了难度

  5. Unicode

    包含全世界所有国家需要用到的字符,是国际编码,通用性强

 

汉字的编码选择

在操作系统和数据库中,常用的汉字编码有GBK、GB18030和Unicode,GBK和GB18030的优势是占用空间小,Unicode的优势是全球化的支持

 

编码的转换

GBK和GB18030与Unicode编码之间需要转换,否则会出现汉字乱码

 

设置Linux的字符集

查看当前系统已经安装的字符集

  1. locale命令用于查看当前系统全部的已安装的字符集,Linux支持的符集约800种

    locale -a

  2. 查看已安装的中文字符集

    locale -a|grep zh_CN

    Linux字符集详解

 

安装中文字符集

如果您的Linux系统中没有安装中文字符集,可以用yum命令安装

网上安装中文字符集软件包的方法比较多,没有准确的说法,所以我把多种方法都写了进来,以下命令用root用户执行,不会有副作用

yum -y groupinstall chinese-support

yum -y install chinese-support

yum -y install kde-l10n-Chinese

yum -y install ibus-table-chinese-1.4.6-3.el7.noarch

安装后,执行locale -a|grep zh_CN,如果显示如下内容,表示安装成功

Linux字符集详解

 

修改字符集配置文件

CentOS6.x字符集配置文件在/etc/sysconfig/i18n文件中。

CentOS7.x字符集配置文件在/etc/locale.conf文件中,内容如下:

Linux字符集详解

执行以下命令或者重启系统使修改生效。

CentOS6.x

source /etc/sysconfig/i18n

CentOS7.x:

source /etc/locale.conf

 

LANG环境变量

LANG环境变量存放的是Linux系统的语言、地区、字符集,它不需要系统管理员手工设置,/etc/profile会调用/etc/profile.d/lang.sh脚本完成对LANG的设置,/etc/profile.d/lang.sh会进行字符集的配置

CentOS6.x 字符集配置文件在/etc/syscconfig/i18n文件中。

CentOS7.x 字符集配置文件在/etc/locale.conf文件中

 

修改客户端的字符集

客户端的字符集必须与Linux服务端一致,否则会出现乱码,以SecureCRT为例。修改会话的属性,在Appearance界面中的Character encoding下拉框中选择

Linux字符集详解

 

字符集转换工具

Linux提供了iconv命令把文件内容从一种编码转换成另一种编码

参数说明:

–list:列出iconv支持的编码列表

-f encoding :源文件内容的编码

-t encoding:目标文件内容的编码

-o file:指定输出文件

-c:忽略输出的非法字符

-l:列出已知的编码字符集

-s:禁止警告信息,但不是错误信息

–cerbose:显示进度信息

示例:

把当前目录的book1.c由gbk转换成utf-8,结果输出到/tmp/book1_utf8.c中

iconv -f gbk -t utf-8 book1.c -o /tmp/book1_utf8.c

 

应用经验

  1. Linux系统在业务化之前,就应该确定字符集,然后不再改变。系统在业务化后,修改字符集是一件很麻烦的事情,最好别惹这个麻烦
  2. 虽然gb18030字符集比gbk更丰富,但是gb18030中有部分汉字是4字节,这一点让程序员很郁闷,所以,程序员更倾向gbk字符集
  3. 设置Linux的字符集时,还要考虑WEB系统和数据库系统采用的字符集,最好是大家都保持一致

到了这里,关于Linux字符集详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库——MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符、字符集和字符编码。 字符(Character) 是计算机中字母、数字、符号的统称,一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。 计算机是以二进制的形式来存储数据的。平时我们在

    2024年02月05日
    浏览(42)
  • mysql进阶-修改linux服务器中MySQL的字符集

    linux 中 mysql8 默认的字符集是 latin1 ,在插入中文时会报错,所以一般在配置好mysql时需要修改字符集为 utf8 【又叫utfmb3,一般开发够用,一个字符用3个字节表示】或者 utfmb4 【一个字符用4个字节表示,如果存储emoji表情,必须用utfmb4】 1366 - Incorrect string value: xE4 xBA xBA(xE7 x94 x

    2024年02月14日
    浏览(43)
  • linux修改locale字符集编码为UTF-8/GBK,修改语言区域为zh-CN(中文-中国)

    linux系统的语言、区域、字符集编码由`locale’ [loʊˈkæl] 决定。 对应配置文件路径: centos7 /etc/locale.conf centos6 /etc/sysconfig/i18n 以下以centos&为例 LANG= LC_CTYPE=“POSIX” LC_NUMERIC=“POSIX” LC_TIME=“POSIX” LC_COLLATE=“POSIX” LC_MONETARY=“POSIX” LC_MESSAGES=“POSIX” LC_PAPER=“POSIX” LC_NAME=“

    2024年02月13日
    浏览(75)
  • 算法加密与解密、字符编码与字符集

    加密保证数据不会被窃取或者修改 哈希算法 压缩映射 :散列又称为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。 哈希算法(Hash)又称摘要算法(Digest),哈希算法的目的就是为了验证原始数据是否被篡改。 主流的散列算法有MD5和

    2024年02月03日
    浏览(50)
  • 有限字符集的字符串压缩算法

    在开发中,经常有上报线上堆栈来分析处理线上问题的场景,所以,对堆栈的压缩和加密也是必不可少的。加密:可以使用AES对称加密算法,压缩:可以在上传时利用protobuf天生的压缩性对字符串进行压缩。 不过,出于对流量的节省和传输效率的提升,可以通过在堆栈上传前

    2024年02月11日
    浏览(62)
  • oracle 字符集

      NLS_NCHAR_CHARACTERSET  国家字符集 NLS_CHARACTERSET  字符集 -----字符集和国家字符集的区别 字符集用来存储CHAR,VARCHAR2,CLOB,LONG等类型数据。 国家字符集用以存储NCHAR,NVARCHAR2,NCLOB等类型数据。

    2024年01月24日
    浏览(43)
  • HTML 字符集

    HTML5 中的默认字符集为 UTF-8。 数字 ASCII ANSI 8859-1 UTF-8 描述 32 space 33 ! ! ! ! exclamation mark 34 \\\" \\\" \\\" \\\" quotation mark 35 # # # # number sign 36 $ $ $ $ dollar sign 37 % % % % percent sign 38 ampersand 39 \\\' \\\' \\\' \\\' apostrophe 40 ( ( ( ( left parenthesis 41 ) ) ) ) right parenthesis

    2023年04月25日
    浏览(52)
  • (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(58)
  • TiDB字符集和时区

    TiDB 字符集和时区 mysql select @@version; +--------------------------------------+ | @@version | +--------------------------------------+ | 5.7.10-TiDB-v2.1.0-beta-179-g5a0fd2d | +--------------------------------------+ 1 row in set (0.00 sec) mysql show variables like \\\'coll%\\\'; +----------------------+-------------------+ | Variable_name | Value | +---

    2024年02月16日
    浏览(53)
  • 【PG】PostgreSQL字符集

    目录 设置字符集 1 设置集群默认的字符集编码 2 设置数据库的字符集编码 查看字符集 1 查看数据字符集编码  2 查看服务端字符集 3 查看客户端字符集 4 查看默认的排序规则和字符分类  被支持的字符集 PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括 单字节字

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包