Linux下宽字符串输出问题,求解...

Linux下宽字符串输出问题,求解...,第1张

setlocale( LC_ALL, "chs " )

看看是不是没有调用这个函数

for example

char str[1024] = "abc123故障短路切换"

wchar_t array[1024]={0}

setlocale(LC_ALL,"zh_CN.GB2312")

/*from chinese to Unicode*/

if((ret=mbstowcs(array, str, strlen(str)))==-1)

{

printf("error\n")

}

goodluck

我怎么就编译过了,检查一下自己的程序吧。你的写法应该么有问题。

$ cat ws.cc

#include <string>

#include <iostream>

int main()

{

std::wstring wstr = L"世界你好!"

std::wcout <<wstr <<std::endl

return 0

}

$ g++ ws.cc -o ws

$

不会编程。不过我记得:

1、Linux 的内部字符串数据处理都是 utf8 。这个是标准。

2、外部字符串是 locale 编码,也就是设置的 locale 系统环境变量的编码。

3、输入 locale2utf8 ,输出 utf82local 。

这个是 Linux 的标准处理。

不过输出输入还是根据环境考虑。

没有一种算法可以明确检测一段文字的编码。windows 下面都是借助字符串前置的识别码决定的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8291860.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存