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

news2024/11/27 14:31:41

 首先要区别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.coloradmin.cn/o/577376.html

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

相关文章

计算机网络四 网络层

网络层的作用 网络层是计算机网络中的一个重要层次,它的主要作用是实现不同网络之间的通信和数据传输。网络层通过将数据分组并添加路由信息,使得数据可以在不同的网络之间传输。 网络层功能 异构网络互连 异构网络互连是指将不同类型的网络连接起来…

C++ 学习 ::【基础篇:07】:C++ C11 标准中 关键字 auto 的基本介绍与使用

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

redis 五种数据类型简介

redis的五种数据类型是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sort set (有序集合…

【初识 Docker | 中级篇】 Docker 安装 MySQL

文章目录 前言一、安装 docker1、安装docker2、安装docker-compose 二、mysql 单机安装1.创建mysql配置1.1.创建目录1.2.创建docker-compose.yml 2.启动mysql容器 三、mysql 主从复制安装1.主服务器容器配置1.1.修改my.cnf配置文件1.2.重启容器实例,创建同步用户 2.…

【 TensorFlow】URLError: <urlopen error no host given> 错误的 有效的解决方法

URLError: 错误的 有效的解决方法😎 前言🙌错误运行截图:解决方案流程图:运行成功截图 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!&a…

opencv_c++学习(二十六)

一、ORB特征点 ORB特征点计算步骤: Step1:选择某个像素点作为中心点P,其像素值为I。 Step2:设置判定FAST角点(其方法比较两个像素之间的差值)的像素阈值,例如 T p 20 % ∗ I p T_p 20\%*I_p Tp​20%∗Ip​ Step3:比较中心点的像素值与半径为3的圆周上…

传统加密技术(恺撒+仿射)

1.Caesar cipher恺撒密码 是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 加密对象:英文字母 密钥格式:k&#…

哈希表、unordered_map和unordered_set模拟

目录 哈希表 闭散列 开散列 unordered_map和unordered_set模拟 对开散列的哈希表改造 unordered_set模拟 unordered_map模拟 哈希表 哈希概念:通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该…

当下的程序员该如何面对复杂的就业坏境

已经2023年了,我们都知道现在开发趋向于年轻化,大部分都是90后、95后,毕竟,软件开发不像硬件开发一样,年限越高,相对来说越吃香。 31岁,前端工程师,工作经历8年,7年左右都在外包公司…

LAMP架构(Apache、Mysql、PHP服务的部署)

目录 一、LAMP架构 1.LAMP组件 二、编译安装Apache httpd服务 1.关闭防火墙,拉取软件包 2.安装环境依赖包 3.配置软件模块 4.编译及安装 5.优化配置文件路径 6.添加httpd系统服务 7.修改httpd 服务配置文件 8.浏览器访问验证 三、编译安装mysqld服务 1.…

java.lang.IllegalStateException: Failed to load ApplicationContext

问题描述 mvn clean install的时候报的如下异常: 紧接着又往下翻了一下日志还有一个这个错误 按正常来说通过可以取pom当中的properties标签的值呀。但是可以发现编译过后的application当中的值并没有被替换。 解决过程 (1)我先是将server.…

1:400 万中国土壤数据介绍

一、土壤数据在科研以及日常生产生活中具有重要性价值。以下是其主要方面: 农业生产:土壤数据对于农业生产至关重要。通过了解土壤的物理、化学和生物学特性,农民可以合理管理土壤,选择适合的作物和肥料,调整灌溉和排水…

yolov8_track追踪加分割(yolo目标检测+追踪+分割)

**这个仓库包含了最先进的多目标追踪器。其中一些基于运动信息,另一些则基于运动和外观描述。对于后者,最先进的ReID模型也会自动下载。目前支持的模型有:DeepOCSORT LightMBN、BoTSORT LightMBN、StrongSORT LightMBN、OCSORT和ByteTrack。 我们提供了如何将这个包与流行的…

【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 前面我们学了MobileNetV1-3,从这篇开始我们学习ShuffleNet系列。ShuffleNet是Face(旷视)在2017年发布的一个高效率可以运行在手机等移动设备的网络结构,论文发表在CVRP2018上。这个新的轻量级网络使用了两个新的操作&#…

软考A计划-试题模拟含答案解析-卷一

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

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

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

网络规划与设计实验+配置案例报告+pkt

目录 第一部分:网络规划与设计实验..... 7 实验一 用户需求分析报告的撰写... 7 一、实验目的和要求... 7 二、实验内容... 7 三、实验步骤... 7 3.1 项目背景... 7 3.1.1 信息化发展趋势... 7 3.1.2 学校基本情况介绍... 8 3.1.3 学校对网络建设的基本要求…

Ovirt 开源虚拟化平台安装

ovirt官网 一、资源规划介绍 1.1、服务规划 ovirt版本 ovirt engine 4.3.10 ovirt node 4.3.10 ovirt.node01.opsvv.com 负责托管引擎服务 1.2、资源划分 1.2.1、节点划分 密码均为:12345678 Node02无法开启虚拟化,只演示加入集群节点使用 节点…

NodeJs服务链路追踪日志

(逆境给人宝贵的磨炼机会。仅有经得起环境考验的人,才能算是真正的强者。自古以来的伟人,大多是抱着不屈不挠的精神,从逆境中挣扎奋斗过来的。——松下幸之助) 服务链路追踪 服务的链路追踪指我们可以通过一个标记&am…

阿里云ECS部署Trojan代理

项目地址:GitHub - Jrohy/trojan: trojan多用户管理部署程序, 支持web页面管理 一、容器部署: docker run --name trojan-mariadb --restartalways -p 3306:3306 -v /home/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORDtrojan -e MYSQL_ROOT_HOST% -e…