std::runtime_error: locale::facet::_S_create_c_locale name not valid

在一台配置为

SUSE 11 X86_64 GCC 4.5.0的机器上 静态编译各种库文件 能正常运行

后将其拷贝到另一台配置为:

SUSE 10.1 GCC4.1.0的机器上无法运行,报标题中的这个错误。

google后发现还比较常见,boost maillist中给出了1.52的相关的补丁,地址如下:

https://svn.boost.org/trac/boost/ticket/4688#no1

 

借此学习一下国际化和本地化的知识,这个链接里有比较详细的介绍:

http://www.ibm.com/developerworks/cn/linux/l-cn-linuxglb/

获取系统当前locale变量

                
 $ locale 
 LANG=en_US.UTF-8                    # 未设置任何 LC_xxx 变量时所使用的默认值
 LC_CTYPE=zh_CN.UTF-8                # 指定使用某区域的字符分类及处理方式
 LC_NUMERIC="en_US.UTF-8"            # 指定使用某区域的非货币的数字格式
 LC_TIME="en_US.UTF-8"               # 指定使用某区域的日期和时间格式
 LC_COLLATE="en_US.UTF-8"            # 指定使用某区域的排序规则
 LC_MONETARY="en_US.UTF-8"           # 指定使用某区域的货币格式
 LC_MESSAGES="en_US.UTF-8"           # 指定使用某区域的响应与信息的格式
 LC_PAPER="en_US.UTF-8"              # 指定使用某区域的纸张大小
 LC_NAME="en_US.UTF-8"               # 指定使用某区域的姓名书写方式
 LC_ADDRESS="en_US.UTF-8"            # 指定使用某区域的地址格式和位置信息
 LC_TELEPHONE="en_US.UTF-8"          # 指定使用某区域的电话号码格式
 LC_MEASUREMENT="en_US.UTF-8"        # 指定使用某区域的度量衡规则
 LC_IDENTIFICATION="en_US.UTF-8"     # 对 locale 自身信息的概述
 LC_ALL=                             # 用来覆盖掉所有其他 LC_xxx 变量的值

locale相关变量使用时的先后顺序,优先级高的可以覆盖优先级低的

 [1] LANGUAGE 
 [2] LC_ALL 
 [3] LC_xxx 
 [4] LANG 

 locale 的名称存在一个命名的格式。

language[_territory[.codeset]][@modifier]

例如:zh_CN.utf-8

 

 

转载于:https://www.cnblogs.com/hours10000/archive/2013/03/05/2944750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值