Linux (centos)中文乱码问题解决 及说明

news/2025/1/16 1:51:43/

 首先要区别3个概 :编码集、字符集、字体 是完全不同的东西,我们要解决的是字符集问题。

当一个系统初始化完毕后,会生成一个 /usr/lib/locale/locale-archive 文件,这个是字符集二进制文件,是系统不同语言运行的核心,通过命令 locale -a 可以看到当前文件中支持的语言

locale 命令可以看到当前的字符集情况

 由于网络上充斥着大量垃圾信息(缺乏理论说明的解决方案),这里需要详细解释一下。

这里的POSIX是系统自带的,也就是C语言,对于其他语言 (eg. zh_CN.UTF-8),可以通过如下命令生成到/usr/lib/locale/locale-archive文件中:

localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

此处代表的含义是: 通过UTF-8编码格式,对zh_CN进行编码,生成zh_CN.UTF-8字符集,这里的zh_CN可以通过如下命令查看:

(可以看到有 ca_ES en_US等很多文件夹,所有命令中 zh_CN可以改成这里任意文件夹名)

到这里,通过locale -a |grep zh_CN 确认了我们系统支持了中文的能力

 通过 fc -list确认我们支持当前系统支持的字体

没有则向fonts传输就好(yum安装就不说了,常规字体基本都没有问题)

对于系统已经支持中文的条件下,只需要选择对就行了

网络上有很多帖子建议修改 /etc/environment 、/etc/profile、~/.bash_profile 、甚至 rc.local等

这些东西都不建议去设置,centos7专门设置了 /etc/locale.conf文件

回到locale命令

执行该命令后,所有选项都是"POSIX"后,对 /etc/locale.conf 进行编辑,输入 LC_CTYPE=zh_CN.UTF-8 后刷新,命令如下:

"" > /etc/locale.conf
"LC_CTYPE=zh_CN.UTF-8"> /etc/locale.conf
source /etc/locale.conf

 此时 中文乱码问题就解决了。那么为什么不去不更改其他选项呢?或者直接将LANG 改成zh_CN.UTF-8呢,这里要弄清每一个参数的含义:

参数说明
LANG当其他参数没有指定的时候,就指定为该值
LC_CTYPE语言符号和分类(可以看到这正是我们需要修改的)
LC_NUMERIC数字格式,一般不用更改
LC_TIME 时间格式,直观影响就是date命令的输出
LC_COLLATE 排序的习惯规则,一般也不用修改
LC_MONETARY货币单位,这个对于服务器来说,没有修改必要
LC_MESSAGES提示信息,如安装软件,出现提示之类,无关紧要,用命令行的人总会点英语
LC_NAME姓名书写方式
LC_ADDRESS地址书写方式
LC_TELEPHONE电话书写方式
LC_MEASUREMENT度量衡表达方式,不用关系,几磅几磅之类
LC_PAPER纸张大小
LC_IDENTIFICATION对locale自身包含信息的概述
LC_ALL覆盖其他参数的值

通常我们要做的就仅仅是改变LC_CTYPE就可以,如果是简单机器下这里的任意一项都可以很方便的修改,但是如果复杂第一点,则很容易出现 setlocale: 错误或警告


http://www.ppmy.cn/news/95799.html

相关文章

uCOSii中的事件标志组

事件标志管理 (EVENT FLAGS MANAGEMENT) OSFlagAccept() 无等待查询”事件标志组的事件标志位”是否建立 OSFlagPend() 需要等待”事件标志组的事件标志位”建立 OSFlagCreate() 建立一个事件标志组 OSFlagDel() 删除一个事件标志组 OSFlagPost() 置位或清0事件标志组中的…

wait,notify,notifyAll,sleep,join等线程方法的全方位演练

一、概念解释 1. 进入阻塞: 有时我们想让一个线程或多个线程暂时去休息一下,可以使用 wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify()、notifyAll() 唤醒它,线程被唤醒后,会等…

计算机操作系统第四版第八章磁盘存储器的管理—课后习题答案

1.目前常用的外存有哪几种组织方式? (1)连续组织方式。为每一个文件分配--组位置相邻接的盘块,由此形成的文件物理结构是顺序式的文件结构。 (2)链接组织方式。为每个文件分配一组位置离散的盘块,通过给每个盘块设置一个指针,将属于同-一个文件的盘块链…

路径规划算法:基于回溯搜索优化的路径规划算法- 附代码

路径规划算法:基于回溯搜索优化的路径规划算法- 附代码 文章目录 路径规划算法:基于回溯搜索优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

算法7.从暴力递归到动态规划0

算法|7.从暴力递归到动态规划0 1.汉诺塔 题意:打印n层汉诺塔从最左边移动到最右边的全部过程 解题思路: 把字母抛掉,变成左中右三个盘子多个盘子能一下到吗?不能,把上边的拿走,最下边的才能放到指位置(…

关于Chrome DevTool

1.基本 打开开发者工具:F12 打开命令菜单:ctrlshiftp DevTool黑色主题:在命令菜单中输入dark theme 截图:命令菜单输入screenshot dock:undock将开发者工具变成一个独立的出口,dock to right 2.Elements面…

RFID安全的三次认证

一.RFID介绍 RFID是Radio Frequency Identification的缩写,即射频识别。它是一种通过用电磁场收集数据并从远距离自动识别物体的技术。它使用无线电波来将信息从一个电子标签传输到读卡器中,而不需要直接接触。这些标签可以嵌入到物品中或附加到物品表面…

权限提升:Mysql 数据库 .(UDF || 启动项 || 反弹)

权限提升:Mysql 数据库. 权限提升简称提权,由于操作系统都是多用户操作系统,用户之间都有权限控制,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通过 Web…