永发信息网

linux的C库函数wcslen不能正确计算宽字节字符串长度的问题

答案:2  悬赏:10  手机版
解决时间 2021-12-23 21:56
ANSI(GB18030): abc���IJ���def[ 61 62 63 d6 d0 ce c4 b2 e2 ca d4 64 65 66 ]: strlen=14
WCHAR: (UNI,10)[ 61 0 62 0 63 0 2d 4e 87 65 4b 6d d5 8b 64 0 65 0 66 0 ]: wcslen=5
UTF-8: abc中文测试def(UTF8,18)[ 61 62 63 e4 b8 ad e6 96 87 e6 b5 8b e8 af 95 64 65 66 ]

以上是C程序执行结果。
代码文件(格式为GB18030,该文件原先在windows系统上创建并完成编写,现在linux上编译),由于Linux终端显示字符集为UTF-8,因此第一行字符串内容可以在windows上正确显示,但在linux终端上不能正确显示,。
下一行为将字符串转码为宽字符集UCS-2LE,转码成功并显示转码了10个字符(10个宽字符,即20个字节),奇怪的是,调用系统库函数wcslen()返回只有5个字符。
第三行为继续将宽字符集转码为UTF-8,此时终端正确显示了10个字符(UTF-8实际占用了18个字节),表明UCS-2LE的转码是正确的。

请教高手,为何wcslen不能返回正确的的宽字符长度?
最佳答案
我记得linux下一个宽字符占四个字节
全部回答
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
更换机油机率以及更换三滤的具体价格大概是多
果然,聪明人一点就透!
空少的要求 100分
以前和前任的照片怎么处理?
气垫粉底使用方法,用多久
兰州中西医结合医院怎么样
去年春季,我国西南地区发生了百年一遇的特大
工商银行对公资信证明有哪些种类?
小锅盖怎么样才能多收台?
友谊破碎的破碎用英语怎么说
紧靠肚脐右侧应该是什么器官。
用24厘米长的铁丝围成边长都是整厘米的长方形
“H”形经济格局的东端是A.长江三角洲经济区B
炖燕窝什么时候放冰糖
读图回答:该地位于黄河A.黄河下游B.黄河中游
推荐资讯
用一张长8厘米,宽6厘米的长方形,旋转形成圆柱
齐鲁医院与山大中心学校多远
已知集合A={-3,-2,0,1,2,3,4},B={x|x-
全民k歌能不能改歌词?
________×________=总价.
继承人亲属关系证明怎么填写
投标文件资料清单有没有固定格式, 是指投标
孕妇吃什么水果补叶酸
宿舍有老鼠 床上经常发现老鼠屎 最近又总是身
vivox5 在哪个文件里可以找到用优酷客户端下
科目二能买过吗
新手求助生或死5怎么全屏模式
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?