locale::facet::_S_create_c_locale name not valid解决方案

在很多的shell脚本中,我们经常会看见某一句命令的前面有一句“LC_ALL=C”
SAR_CMD="LC_ALL=C sar -u -b 1 5 | grep -i average "
这到底是什么意思?
LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。
---------------------------------
转帖:http://www.linuxsky.org/doc/newbie/200707/84.html
在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置:1.    LC_COLLATE
定义该环境的排序和比较规则

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

3.    LC_MONETARY
货币格式

4.    LC_NUMERIC
非货币的数字显示格式

5.    LC_TIME
时间和日期格式

6.    LC_MESSAGES
提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。

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

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

C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。

"POSIX" :Specifies the minimal environment for C-language translation called the POSIX locale. If setlocale() is not invoked, the POSIX locale is the default
"C"  Equivalent to "POSIX".
-----------------------------------
How to view the current locale setting?
# locale
How to change the locale setting?
* Via the CDE login locale
* As a user-specific locale
* As a system default locale
To change the current locale setting, first confirm that the desired locale is
installed on the system with:
# locale -a
de
en_AU
en_CA
en_UK
C
If the desired locale is not in the list, you will need to install the
appropriate packages for that locale. See the Note below for more information
about locale packages.

How to change the locale via the CDE login locale?
On the CDE login banner:
Choose options - languages
Under languages - choose the new locale
The CDE banner will re-cycle and then you can login to the selected locale.

NOTE: If a user has a different default locale set in their environment, the
that locale setting will override the selected CDE login locale.

How to set a user-specific locale?
Note:
For sh, ksh:
LANG=C; export LANG
LC_ALL=C; export LC_ALL
For csh:
setenv LANG C
setenv LC_ALL C

Note: To set a default locale for a user‘s environment, set the LANG or LC_*
variables in a user‘s shell intialization file such as $HOME/.profile or
$HOME/.cshrc
How to change the locale by setting the system default locale?
LANG=C
LC_ALL=C

Example from the /etc/default/init file:

Lines of this file should be of the form VAR=value, where VAR is one of
TZ, LANG, or any of the LC_* environment variables.
LANG=C
LC_ALL=C

Note: The system must be rebooted after making changes to the
/etc/default/init file in order for the changes to take effect.

How to verify the locale setting?
After setting or changing the locale, verify that the locale is set correctly:
Check if the locale is set correctly by running the locale command without any
options:
# locale
LANG=C
LC_CTYPE= "C"
LC_NUMERIC= "C"
LC_TIME= "C"
LC_COLLATE= "C"
LC_MONETARY= "C"
LC_MESSAGES= "C"
LC_ALL=C
时间: 2024-10-12 09:41:18

locale::facet::_S_create_c_locale name not valid解决方案的相关文章

maven project facet dynamic web module错误解决方案

在Eclipse中使用maven创建web-app的过程中总会遇到一个问题,cannot change version of project facet dynamic web module to 2.5/3.0,但此时我们打开工程的properties中的Facet选项会发现这个无法更改. 解决方案: 1.调整项目的web.xml,将版本号统一修改为2.5/3.0 <?xml version="1.0" encoding="UTF-8"?> <w

MongoDB安装(Linux)

下载文件 http://downloads.mongodb.org/linux/mongodb-linux-i686-static-2.5.0.tgz 解压: tar -zxvf mongodb-linux-i686-static-2.5.0.taz 改名: mv mongodb-linux-i686-static-2.5.0 mongodb 创建数据库存储路径以及日志路径 配置文件如下: mongodb.conf #端口,默认为27017 port=27017 #数据库路径 dbpath=/u

roscore不能启动

1. 通过VNC 在VNC窗口上出入 [email protected]:~$ roscore  得到下面错误信息 process[rosout-1]: started with pid [3751]started core service [/rosout]terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not v

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

Background MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Library: 开关 对应的库 版本 /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB

修复svn hook导致的字符集错误

修改pre-commit钩子,如果返回中文信息,可能会报如下错误: Error output could not be translated from the native locale to UTF-8. 网上流传的解决方案,是增加以下代码:export LANG=zh_CN.UTF-8 该方法实测无效! 其实这是svn的一个bug,存在了很长时间,到svn1.8时才彻底修复,修复方案是,升级到svn1.8或更高版本,然后修改apache mod_dav_svn插件的配置. 具体步骤如下: 第

C++ stringstream介绍,使用方法与例子

From: http://www.usidcbbs.com/read-htm-tid-1898.html C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件. istringstream类用于执行C++风格的串流的输入操作. ostringstream类用于执行C风格的串流的输出操作. strstream类同时可以支持C风格的串流的输入输出操作. istringstream类是从istream

宽字符和窄字符之间的转换,以及对中文的处理问题总汇

直接代码: 注:编译环境VS2010 SP1 1 /*实现宽字节和窄字符转换以及中文文件的输入输出*/ 2 3 #include <iostream> 4 #include <string> 5 #include <fstream> 6 #include <locale> 7 #include <codecvt> 8 #include <windows.h> 9 #include <tchar.h> 10 using na

python--接口测试--xlwt模块使用时报错情况解决方法

我们做接口测试时经常用到xlrd和xlwt两个模块,这里的xlrd还比较好弄直接安装就好, 但是xlwt安装会失败,网上自己下载xlwt3模块后然后通过python setup.py install指令来 安装.当我们导入这个模块并使用的时候会碰到以下两种情况: 1. 报错ValueError: cannot use LOCALE flag with a str pattern 解决方案:进入python3安装目录下的Lib,找到ser_parse.py文件,修改第832行代码注释这行,改为: