VC-用printf或者wprint能直接输出UTF8的字符串吗?

VC-用printf或者wprint能直接输出UTF8的字符串吗?

晚风撩人 发布于 2017-06-08 字数 172 浏览 1330 回复 3

在使用printf或者wprintf输出时,可以用%s和%S来输出多字节和宽字符的字符串,但是如果是UTF8的字符串,却需要进行转换到宽字节或者多字节才行,有没有办法不转换直接即可输出?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-11-05 3 楼

用 setlocale(LC_ALL,"");做本地语言设置,前提是系统要支持能显示的字符串

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main()
{
wchar_t *s1 = L"試してみてください";
wchar_t *s2 = L"try it";
wchar_t *s3 = L"试一试吧";

setlocale(LC_ALL,"");
wprintf(L"%lsn%lsn%lsn",s1,s2,s3); /* 打印三国语言 */
return 0;
}

归属感 2017-10-29 2 楼

没有~必须转换..不管你用什么方式都要转换成宽字节才行..你可以查看内存...
创建 const char* = "您好" const char* = L"您好"
你会看到在内存中的值是不一样的...因为A跟U码不一样~

我做的方法是用把UTF8的文字以流方式读取到内存中..注意txt文本一定要是UTF8格式的..
然后保存在char中..通过自定义函数printf(const char,...)来输入文字的..
希望对你有所帮助~

归属感 2017-09-13 1 楼

这个要看系统的语言设置了,linux 一般是直接支持 UTF8 的, windows 中文使用的是 GBK 吧