文档章节

centos6.5 烦人的字符集 locale 等等问题解决记录

vasks
 vasks
发布于 2016/04/14 13:28
字数 1035
阅读 1422
收藏 1

locale 查看现在服务器的字符:

[root@Master ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8


locale -a 查看服务器支持哪些字符集:

打印太多,多虑下 zh---中国 表示支持的中国字符集有:

[root@Master ~]# locale -a|grep zh
zh_CN
zh_CN.gb18030
zh_CN.GB18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8

注意:

zh_CN.utf8 待会设置的时候可以大写也可以小写,utf-8 ==== UTF-8


locale 的变量是什么意思?

LC_ALL > LC_* > LANG

LANG,LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。

LC_ALL,它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响



每个变量是干嘛的?

Locale的命名规则:<语言>_<地区名>.<字符编码名称>

对于zh_CN.GB2312而言,zh表示中文,CN表示大陆地区,GB2312表示使用的字符集为GB2312。

  1. LC_COLLATE 
    用于比较和排序。

  2. LC_CTYPE 
    用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。

  3. LC_MONETORY 
    用于格式化货币单位。

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

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

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

  7. LC_ALL 
    它不是环境变量,只是一个宏,可使用setlocale设置所有的LC_*环境变量。这个变量设置之后,可以废除LC_*和LANG的设置值,使得这些变量的设置值与LC_ALL的值一致。

  8. LANG 
    它的值用于指定上面环境变量没有设置的所有变量值。如果指定了上面任何一个变量的值,则会废除对应的LANG值的缺省设置。



情景1、设置中文:不显示中文目录等等

首先得确定,设置两种字符集,一个是你的服务器,一个是你连接服务器的终端。当然不用远程肯定就不用设置终端,终端是putty,secureCRT,xshell等等。

设置服务器:

export LC_ALL=zh_CN.UTF-8

长久之计,

 echo export LC_ALL=zh_CN.UTF-8 >> ~/.bashrc

终端设置:secureCRT

选项-绘画选项-外观

下拉列表选择你的语言,细心找找

情景2、svn up 时出现,cannot .......utf-8.........

解决方案:

<1>快速方案:
直接 在shell输入: export LC_ALL=en_US.UTF-8,locale 命令看看有没有错误,无错误 执行 svn up
<2>由于方案<1>只能针对此shell管用,下次再次进入shell时,仍需要重新设置,所以有长久方案:
编辑 /etc/profile文件, 如图
svn: E000022: Can't convert string from native enc

需要重新打开新的shell

情景3、locale 的时候出现  cannot set

[root@Master ~]# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

这种情况最坑,找遍各种资料,无果。

这种情况是因为glibc 相关造成的,可能是机器最近更新了glibc  等等。我就是这种情况

你可以

1、可能没有装这个,yum试试,如果装了,第二步

yum install glibc-common

2、是不是升级了glibc,环境变量,打印看看

我之前为了某软件方便,直接在 /etc/profile写入下面这行。

#export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

把这行注释,locale不会报错了。

[root@Master ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

如果你的系统是ubuntu:

参照:

https://www.ttlsa.com/linux/howto-change-ubuntu-locale/


© 著作权归作者所有

vasks
粉丝 21
博文 40
码字总数 34341
作品 0
朝阳
程序员
私信 提问
secureCRT linux shell显示中文乱码 解决方法

引:有没有这样的经历: 1、在shell中直接查看包含中文的文件时,出现一堆火星文,不得不下载下来window看. 2、无法正常的在shell中输入中文。 3、make的时候输出一堆乱码。 以下是查阅各种网...

云栖希望。
2017/12/04
0
0
Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

博文说明【前言】: 本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点【2017年6月21号】下,所掌握的技术水平有...

1清风揽月1
2017/06/21
0
0
字符集问题(Linux、oracle、终端等,导入导出数据)

locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别 (转自:http://hi.baidu.com/edeed/item/c23752f36abdd916ce9f3289) 例如zhCN.GB2312、zhCN.GB18030或者zhCN.UTF-8。很多人都不明白...

winsonblog
2013/11/01
0
0
CentOS 下解决ssh登录 locale 警告

最近登录一台CentOS 6机器,发现每次登录都提示如下警告: 这种警告当然不能容忍,所以要fix it. 输入以下命令,重新登录就不会出现这个问题了。 但是到底是什么原因导致这样的警告? 首先我...

我爱吃葱花
01/09
0
0
centos locale报错问题

登录linux的时候报如下错误 虽然不影响什么但是很烦人 加上之后解决。 另外可以通过 查看所有locale值

水贼过河
2013/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
51分钟前
3
0
通过四道常问面试题,带你了解什么是数据库分库分表

编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展。 其次:本文为纯干货,建议先转发...

老道士
今天
5
0
springmvc 整体流程

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR......

architect刘源源
今天
3
0
磁盘管理

先来看两个查看的命令 查看磁盘使用情况df 用法:df, df -h, df -m, df -k 查看目录或文件大小 用法:du -sh, du -sm, du -s(默认以k为单位) 新加一块盘如何操作 步骤:分区(可选)--> 格...

wzb88
今天
3
0
在 Linux 下确认 NTP 是否同步的方法

NTP 意即网络时间协议Network Time Protocol,它通过网络同步计算机系统之间的时钟。NTP 服务器可以使组织中的所有服务器保持同步,以准确时间执行基于时间的作业。NTP 客户端会将其时钟与 ...

Linux就该这么学
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部