当前位置: 技术问答>linux和unix
UTF-8的问题(本周5,18:00前结账)。
来源: 互联网 发布时间:2015-09-01
本文导语: 本人刚接触linux不久,如果问题幼稚,请包涵。 问题如下: 目的:打开一个现有文件,文件名中有unicode字符(比如gb2312编码的)。可以获得文件名是UTF-8编码的字符串。 问:我该怎么做? 本人暂时的理解如下:我可...
本人刚接触linux不久,如果问题幼稚,请包涵。
问题如下:
目的:打开一个现有文件,文件名中有unicode字符(比如gb2312编码的)。可以获得文件名是UTF-8编码的字符串。
问:我该怎么做?
本人暂时的理解如下:我可以用iconv来转,但是这样有弊端,就是我必须知道我该转成什么编码。如果是windows下的话,我把UTF-8转成宽字节字符串后,用_wfopen就可以了。但是我没有找到在linux上对应的东西。不知道setlocale以及mbstowcs之类的一些东西能否解决问题。
多谢!
问题如下:
目的:打开一个现有文件,文件名中有unicode字符(比如gb2312编码的)。可以获得文件名是UTF-8编码的字符串。
问:我该怎么做?
本人暂时的理解如下:我可以用iconv来转,但是这样有弊端,就是我必须知道我该转成什么编码。如果是windows下的话,我把UTF-8转成宽字节字符串后,用_wfopen就可以了。但是我没有找到在linux上对应的东西。不知道setlocale以及mbstowcs之类的一些东西能否解决问题。
多谢!
|
字符串之间的转换, 肯定是要知道,原来和目标编码的.
同一个字符0xXX , 在不同编码里面的意思,是不一样的.
同一个字符0xXX , 在不同编码里面的意思,是不一样的.
|
glib的做法是
1。如果系统支持nl_langinfo则使用这个函数获取系统的locale
2。如果没有则使用setlocale获取本地的locale
3。如果还是不行则使用getenv获取LC_ALL/LC_CTYPE/LANG 获取locale
4。如果还是不行则尝试两个glib的两个内部环境变量
我想也许你可以使用方法2或者3进行一下操作看看
欢迎访问我的个人网站 www.linuxc.net
1。如果系统支持nl_langinfo则使用这个函数获取系统的locale
2。如果没有则使用setlocale获取本地的locale
3。如果还是不行则使用getenv获取LC_ALL/LC_CTYPE/LANG 获取locale
4。如果还是不行则尝试两个glib的两个内部环境变量
我想也许你可以使用方法2或者3进行一下操作看看
欢迎访问我的个人网站 www.linuxc.net
|
我也想了解相关的东西,帮楼主顶一下!
|
自己根据转换表转换吧
|
gz