免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1001 | 回复: 0
打印 上一主题 下一主题

Ubuntu 下wcstombs失败的问题原因及解决方法--使用localedef命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-29 16:24 |只看该作者 |倒序浏览
linux下在使用wcstombs()或者mbstowcs()进行字符集编码转换时,需要先调用setlocale()来定义当前的locale,而setlocale()是否会成功,取决于系统当前是否存在相应的local define文件,这些文件以目录形式存在/usr/lib/locale中,或者以二进制形式存在于/usr/lib/locale/locale-archive中.

locale define文件其实是两种相互转换的字符集信息定义,用来辅助完成wcstombs()转换工作.

使用locale -a来查看所有的locale定义.

我在装了ubuntu后,需要写程序将ascii码转换为unicode,发现setlocale( LC_CTYPE, "en_US.ISO-8859-1")失败,原因是与"en_US.IS-8859-1"相关的locale并不存在,因而转换不能进行. :(奇怪啊,ASCII转UNICODE居然不是默认支持的...-_-#

没有关系,使用localedef命令生成与en_US.ISO-8859-1相关的locale 文件即可,使用命令如下:
locale -f ISO-8859-1 -i en_US en_US.ISO-8859-1
这个命令的意思是生成en_US.ISO-8859-1相关的locale信息,至/usr/lib/locale-archive文件中.

也可以将locale信息生成到目录里,类似/usr/lib/locale/zh_CN.utf8/这样的形式,参考man localedef命令.



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20152/showart_640785.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP