首页 > 其他 > 详细

wcstombs 支持中文当unicode

时间:2020-06-30 19:30:45      阅读:65      评论:0      收藏:0      [点我收藏+]

当C语言程序初始化时(刚进入到 main() 时),locale 被初始化为默认的 C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集(所以才起locale名叫:C)。
也就是说,默认locale是C,字符集是ascii

当我们的输入是一组带有中文或者其他字符的字符串时候,他就会截断。只会转化前面的ascii字符。

如果我们存在中文路径,或者字符,想使用wcstombs该函数来将宽字符串转为多字节字符串,那么我们就得设置系统的当前环境的locale.
主要是使用setlocale这个函数以及两个标记 LC_CTYPE, LC_ALL.

法1:

char* old_locale = _strdup(setlocale(LC_CTYPE,NULL)); //store the old locale

setlocale(LC_CTYPE,setlocale(LC_ALL,"")); //using the locale of the user env.

wcstombs(...)

 setlocale(LC_CTYPE, old_locale); //restore the old locale.

free(old_locale);

法2:

setlocale(LC_ALL,"");     //设置本地默认Locale

wcstombs(...)

setlocale(LC_ALL,"C");     //默认

wcstombs 支持中文当unicode

原文:https://www.cnblogs.com/liuguoyao514257665/p/13215132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!