linux 文件 字符集设置,Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解...

博文说明【前言】:

本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点【2017年6月21号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。

本文参考文献引用链接:

1、http://blog.csdn.net/z4213489/article/details/7937894【好文,必看】

2、http://www.360doc.com/content/14/0103/13/10384031_342301450.shtml【各种格式区别讲解的比比较详细,必看】

正文:

一:字符集部分

字符集就是:01二进制数据字符的对应关系表(也可以称为对应关系数据库,对应关系集合)

示例:

假设这是utf8字符集对应关系:

00010101----例

10101100----如

假设这是GBK字符集对应关系:

00010101----乱

10101100----码

讲解:

我们可以很清楚的看到,相同一段数据,使用不同的字符集,会有不同的显示结果,这就是我们乱码现象的根源,因为不同字符集组织数据的方式不一样。

ps:浏览器展示网页时,网页内容使用字符集如果和系统字符集不一致,一般也不会发生乱码现象(英文的windows系统能正常看中文页面),因为浏览器在获取网页文件时,浏览器会做一个判断,识别网页内容使用的字符集,然后使用相对应字符集去显示页面内容,注意,前提是你操作系统中要有这些字符集存在。

补充知识-字体:

字体:文字渲染效果,同样的一个字,会有:宋体、黑体、仿宋、隶书、楷书、微软雅黑等等效果,字体建立在字符集基础之上。但每个字体库可能不会包含某个字符集全部的字体,有些时候会显示不完全。

总结:

语言是建立在字符集的基础之上的,比如我们的系统使用中文语言,这就是说,有以下几点

1、写:我们输入的汉字要能在计算机中能以汉字字符集的格式进行组织保存并传输。

2、看:网络远端传输过来的数据(二进制数据),我计算机收到之后,需要能展示出汉字字体(此时就要用到这个对应关系表)

总结来说,在中文环境中就是:看中文,写中文(重点在此),传中文。

Linux中字符集文件存放位置: /usr/share/i18n/charmaps

二:系统语言设置-locale部分

1、什么是locale

在Linux中,它使用locale命令来设置和显示程序运行的语言环境(也就是系统运行语言环境,应用进程是在系统的进程之上运行的,应用程序的父进程是init进程)

locale的英文直译为场所,地区,地域,但它在Linux中含义要更大,在Linux中Locale根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境 。

locale的主要作用是描述某一个地域内的人们的语言习惯和文化传统和生活习惯。一个地区的locale就是根据几大类的习惯(变量)定义的。

2、locale的命名规则

locale 命名规则:_.

例如:

zh_CN.utf8

zh_CN.utf8,zh代表中文,CN代表大陆地区,utf8表示字符集。

de_DE.UTF-8@euro

de表示德语,DE表示德国,UTF-8表示字符集,euro表示按照欧洲习惯加以修正

这个命令规则就是说我们在设置locale的相关变量时,都是使用这种格式给变量进行赋值

3、locale命令及参数讲解

设置Locale的根本其实就是设置一组总共12个LC开头的变量(不包括LANG和LC_ALL)Linux中locale文件存放位置: /usr/share/i18n/locales

示例:

weblogic@YDCK-APP11:~/.ssh> locale

LANG=zh_CN.utf8

LC_CTYPE="zh_CN.utf8"

LC_NUMERIC="zh_CN.utf8"

LC_TIME="zh_CN.utf8"

LC_COLLATE="zh_CN.utf8"

LC_MONETARY="zh_CN.utf8"

LC_MESSAGES="zh_CN.utf8"

LC_PAPER="zh_CN.utf8"

LC_NAME="zh_CN.utf8"

LC_ADDRESS="zh_CN.utf8"

LC_TELEPHONE="zh_CN.utf8"

LC_MEASUREMENT="zh_CN.utf8"

LC_IDENTIFICATION="zh_CN.utf8"

LC_ALL=

讲解:

LANG                        #LANG的优先级是最低的,它是所有LC_*变量的默认值。下方所有以LC_开头变量(不包括LC_ALL)中,如果存在没有设置变量值的变量,那么系统将会使用LANG的变量值来给这个变量进行赋值。如果变量有值,则保持不变,不受影响。可以看到,我们上面示例中的输出中的LC_*变量的值其实就是LANG变量决定的

LC_CTYPE                   #用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等,这个变量是最重要的。

LC_NUMERIC              #用于格式化非货币的数字显示。

LC_TIME                      #用于格式化时间和日期。

LC_COLLATE                #用于比较和排序。

LC_MONETORY           #用于格式化货币单位。

LC_MESSAGES             #用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息, 标题,标签, 按钮和菜单等。

LC_PAPER                     #默认纸张尺寸大小

LC_NAME                     #姓名书写方式

LC_ADDRESS                #地址书写方式

LC_TELEPHONE            #电话号码书写方式

LC_MEASUREMENT     #度量衡表达方式

LC_IDENTIFICATION    #locale对自身包含信息的概述

LC_ALL                         #它不是环境变量,它是一个宏,可通过该变量的设置覆盖所有的LC_*变量。这个变量设置之后,可以废除LC_*的设置值,使得这些变量的设置值与LC_ALL的值一致,注意,LANG变量不受影响。

宏:可能会有人对宏没概念,简单说明下,我们在计算机领域说的宏(Macro),是批量处理的一个说法。宏是一种通过某种指定规则来处理数据的过程,可以称之为语法替换(大家应该在编辑器里匹配替换过数据,但这这里要复杂点),这里不同数据替换,宏是获取某种输入(通常是字符串),然后如何根据事先定义的规则,转换成对应的输出(通常也是字符串)。真实的宏要比这里说的复杂,有兴趣可以自行查资料。

在这里,我们这个宏操作就是用LC_ALL的值去覆盖LC_*的变量值

格式化:上面的含义讲到格式化,可能会有人不太清楚,格式化就是重新设定组织数据的规则,拿我们日常生活举例子,我们要记录一段数据,我们可以记在方格纸上,可以记在横格纸上,可以记在白纸上等等,这里的这种的纸张格式就是组织数据的一种方式,不同格式,记录方式和数据量等都不一样,我们在Windows系统中,经常做的格式化优盘操作就是这样,可以把自带的FAT32格式,重新格式化定义为NTFS格式,你可以理解为,将优盘的记录数据从方格纸方式变成横格纸方式。

优先级级别:LC_ALL>LC_*>LANG

注意:定义这么多变量在某些情况下是很有用的,例如,当我需要一个能够输入中文的英文环境,我可以把 LC_CTYPE设定成zh_CN.GB18030,而其他所有的项都是en_US.UTF-8。

总结:LANG是LC_*的默认值,而LC_ALL比LC_*的优先级都高,设置完LC_ALL之后,会强制重置LC_*的值,如果不将LC_ALL的值重置为空,则无法再去设置LC_*的值

补充:一般来说,我们在新装系统之后,我们的变量的值将会是下面这种情况:

NTP-slave:~ # locale

LANG=POSIX

LC_CTYPE=en_US.UTF-8

LC_NUMERIC="POSIX"

LC_TIME="POSIX"

LC_COLLATE="POSIX"

LC_MONETARY="POSIX"

LC_MESSAGES="POSIX"

LC_PAPER="POSIX"

LC_NAME="POSIX"

LC_ADDRESS="POSIX"

LC_TELEPHONE="POSIX"

LC_MEASUREMENT="POSIX"

LC_IDENTIFICATION="POSIX"

LC_ALL=

讲解:C是系统默认的locale,而POSIX是C的别名,这是标准的C Locale。它所指定的属性和行为由ISO C标准所指定。当我们新安装完一个系统时,默认的locale就是C或POSIX。

我们这里说的C其实就是ASCII编码。

POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。

换句话说,为一个POSIX兼容的操作系统编写的程序,可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。

总结:POSIX是一种类UNIX系统的通用接口标准,基于这个标准开发的程序,能够灵活的迁移到不同版本系统上使用。

在这里,locale中的POSIX说的就是一种业内统一的默认locale标准,不区分地域,所有Linux发行版本都支持。

4、常用命令:

1、查看当前locale设置

# locale

NTP-slave:~ # locale

LANG=zh_CN.utf8

LC_CTYPE=en_US.UTF-8

LC_NUMERIC="zh_CN.utf8"

LC_TIME="zh_CN.utf8"

LC_COLLATE="zh_CN.utf8"

LC_MONETARY="zh_CN.utf8"

LC_MESSAGES="zh_CN.utf8"

LC_PAPER="zh_CN.utf8"

LC_NAME="zh_CN.utf8"

LC_ADDRESS="zh_CN.utf8"

LC_TELEPHONE="zh_CN.utf8"

LC_MEASUREMENT="zh_CN.utf8"

LC_IDENTIFICATION="zh_CN.utf8"

LC_ALL=

2、查看当前系统的所有可用locale

# locale -a

3、设置系统的locale(此处以zh_CN.utf8为例)

1)编辑文件:/etc/profie,在文件末尾添加以下内容并报错退出

#vim /etc/profile

export LC_ALL=zh_CN.utf8

export LANG=zh_CN.utf8

2)执行生效命令:

#source /etc/profile

结尾:

感谢阅读,祝有收获的一天,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

柳叶刀发布陈薇团队新冠疫苗试验结果:安全,能诱导免疫反应

来源:腾讯新闻客户端自媒体论文称,研究显示,前述以腺病毒Ad5为载体的新冠疫苗,在给志愿者接种后28天时,显示出免疫原性和人体耐受性。在健康成年人中,对SARS-CoV-2的体液免疫反应,在接种疫苗后第…

UE4从4.15移植到4.16

如果是旧版本的工程需要移植到4.16,有几个地方需要修改: 假设RC是工程名,修改如下(三个CS文件) 类似的,插件也需要这样修改 转载于:https://www.cnblogs.com/AnKen/p/7365806.html

c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码

在Linux环境下用C语言编写线程创建。//file name: pthreadtext.c#include #include //线程头文件//pthread不是linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败//在gcc编译的时候,附加要…

自动驾驶发展到了哪个阶段?七大应用场景走进现实

来源: 智车科技2020年初,新冠疫情突发,百度、京东、美团等在各地提供无人配送、无人清扫服务。在抗击疫情的过程中,自动驾驶商业化得到了很好的实践验证。当自动驾驶技术渐渐走入现实场景,那么我们不禁要问这项技术究竟…

2016 博客导读总结 amp; 个人感悟

此文着笔之时。2017已经在眼前了。预计等我写完,2017已经到了。二次编辑于2017年1月1日早11点。 关于2016的感悟。十二月初就想写,当时认为是有点太早了,只是却思绪如泉涌。 且那时候才刚刚申请到博客专家(訪问量刚刚过5W&#x…

IBM 向云转型、大幅裁员、连 Watson 和 AI 团队也未能幸免

来源:云头条IBM提前30天通知成千上万名员工被裁,可领取90天的薪水,至少在美国是这样,而服务部门首当其冲。IBM正在大举裁员,数量众多的与云计算业务无关的员工被告知他们在蓝色巨人的时间到头了。这个IT巨头在回复IT外…

网络管理的任务包括linux,网络管理员的任务是阻止的10.152.8.0/21 一个基于Linux的防火墙的网络子网的默认端口上的所有出站SSH 连接。以下哪项规则集将完成这项任务?(单选题)...

_(12分)现用质量分数为98%、密度为1.84 g?cm-3的浓硫酸来配制500mL 0.2mol/L的稀H2SO4。可供选择的仪器有:①玻2016最新猴年5字春联清溪吟雅韵求下联把5.6g的Fe放入足量稀硫酸中,Fe完全反应.计算&#xff1…

linux网络包截获,用C实现截获网络数据包

现在进入第二步,捕获数据包。从第20行开始,我们进入了一个死循环,while(1),在第24行,recvfrom(sock, buffer, sizeof buffer, 0, (struct sockaddr *)&from, &fromlen),这个函数要做的就是接收数据…

vue框架的知识

基础:实例----组件----指令----选项-----计算属性----事件绑定----模板渲染-----内置动画 ---组件交互----路由。 vuejs干了什么事情:数据渲染/数据同步 组件化/模块化开发 其他:路由,ajax,数据流。 Vue实例对象&#…

自动驾驶的实现之路——几大关键传感器应用解析

来源:MEMS随着近两年来智慧汽车、车联网等等概念的兴起,汽车自动驾驶的各种科技进展不断占据媒体版面,引起了全球的关注和各国政府的支持。对于大部分人来说, “吃着火锅唱着歌”轻轻松松地直达目的地绝对是美好的愿望&#xff0c…

linux 退后根目录,linux下半部与退后执行的工作

表。当一个工作者线程被唤醒时,它会执行它的链表上的所有工作。当工作完毕时,他会将相应的work_struct对象从链表中移去。7.4.2 使用工作队列(1)创建推后的工作首先要做的是实际创建一些需要推后执行的工作。可以通过DECLARE_WORK在编译时静态的创建该结…

探索“植物人”语言能力和意识水平

来源:脑科学与智能技术卓越创新中心2020年5月25日,中国科学院脑科学与智能技术卓越创新中心(神经科学研究所)、中国科学院灵长类神经生物学重点实验室王立平研究组与复旦大学附属华山医院神经外科毛颖/吴雪海团队在《自然-神经科学…

linux多线程时序问题,Linux时序竞态问题(sleep函数的实现)

时序竞态是指同样的程序,多次调用运行的结果不同,这是由于争夺系统资源所造成的。比如说我们要使用alarm和pause函数来实现一个sleep的功能,那么由于alarm函数的实现过程并不是一个原子操作,那么随时可能被中断。比如说alarm了1秒…

QQList列表功能实现

1.模型 class FriendsModel; interface GroupModel : NSObject property (nonatomic, copy) NSString *name; property (nonatomic, copy) NSString *online; property (nonatomic, strong) NSArray *friends; property (nonatomic, strong) FriendsModel *friendModel; proper…

探臻实录 | 戴琼海:搭建脑科学与人工智能的桥梁

来源:探臻科技评论人工智能作为21世纪最具有影响力的技术,正在包括诸如机器人、语言识别、图像识别、自然语言处理等诸多领域发挥着重要作用。脑科学被誉为“人类科学最后的前沿”,认识脑的奥秘是对人类的终极挑战。而更重要的是,…

linux下的单机工具,Linux下单机模式的Hadoop部署

需要软件:ssh:fedore 9 自带。jdk:http://java.sun.com/javase/downloads/index.jsp,下最近版本jdk-6u18-linux-i586Hadoop:http://apache.etoak.com/hadoop/core/hadoop-0.20.1/,最新版本0.20.1&#xff0…

全球顶尖计算机科学家排名,中科大上榜人数全国第一

来源:今日头条一年一度的全球顶尖计算机科学家TOP1000榜单出炉,这份由Guide2Research发布的计算机科学家排名中,中国科学技术大学以16人入选力压清华、北大、浙大等计算机科学强校,高居全国第一!中科大张亚勤等13位本科…

Linux可以对目录进行硬链接,Linux硬链接与软链接原理及用法解析

在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(hard link),另一种是软链接或者也称为符号链接(symbolic link)。硬链接概念硬链接(hard link, 也称链接)就是一个文件的一个或多个文件名硬…

CentOS6实现路由器功能

网络之间的通信主要是依靠路由器,当然生成环境中是拥有路由器的,但是系统中的路由配置也是需要了解一下地,今天讲解一下在CentOS6环境下搭建路由器,此乃入门级的简单实验。拓扑如上图已经规划好,暂且使用静态路由演示。…

在近期,美众议院为何密集提出了15项新兴技术法案?

来源:资本实验室近期,美国众议院能源和商业委员会及消费者保护与商业小组委员会密集提出了15项与新兴技术相关的法案议程。这些法案开宗明义,建立了明确的目标:确保美国在新兴技术领域的领导地位,以在全球竞争力方面战…