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

噢,谢谢啦,那怎样把 abc你好 这串字符转成 类似"52B3 788C 788C"这种4位16进制的字符串呢。如果解决的话我会继续加分的~~。噢,懂了。

c语言 初始迁移状态是什么?多字节与宽字符转换函数mbstowcs(),wcstombs中提到 初始迁移状态,

字转换:wctomb、mbtowc,wc 指 Wide charactor,mb 指 Multi-byte。\r\n字符串转换:wcstombs、mbstowcs,wcs 和 mbs 的 s 指 string。\r\n\r\n这 4 个函数是 C 标准函数库函数中的。如果只是在 Windows 平台下编程,可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现。但是如果调用标准库函数的话,在 Linux 下也是有效的。调用标准库函数,首先必须包含 locale.h 并调用 setlocale(LC_ALL, "") 后才能正确转换。Windows 下的 Multi-byte 是 ANSI 编码的,Wide charactor 是 Unicode (UTF-16) 编码,而 Linux 下的 Multi-byte 是 UTF-8 编码的,Wide charactor 是 Unicode (UTF-32) 编码。\r\n\r\n#include \r\n#include \r\n#include \r\n\r\nint main(void)\r\n{\r\nchar str[12]\r\nwchar_t wstr[] = { 0x52B3, 0x788C, 0 }\r\nsetlocale(LC_ALL, "")\r\nwcstombs(str, wstr, sizeof(str)/sizeof(char))\r\nprintf("%s", str)\r\nreturn 0\r\n}


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

原文地址: http://outofmemory.cn/yw/7126031.html

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

发表评论

登录后才能评论

评论列表(0条)

保存