UE4 C++ 中文乱码

[复制链接]
查看7057 | 回复6 | 2017-10-23 18:13:24 | 显示全部楼层 |阅读模式
从数据库获取数据后,用的是char数组来获取中文字符串,之后返回UE4中是FString类型,这时候,中文就没法显示。
例:
char str[20]="你好";
FString fs = str;
FString fs1 = FString(str);
//以上转换都是乱码
return fs;
求大牛们帮忙?怎么修改这个中文乱码?



lein | 2017-10-23 18:30:22 | 显示全部楼层
数据库读出来的字符串一般是UTF8编码吧,用 UTF8_TO_TCHAR() 转换一下就行
回复 支持 反对

使用道具 举报

qq529519633 | 2017-10-24 14:25:05 | 显示全部楼层
lein 发表于 2017-10-23 18:30
数据库读出来的字符串一般是UTF8编码吧,用 UTF8_TO_TCHAR() 转换一下就行

数据库读取的数据并不是乱码,只是char数组转换成fstring类型的数据的时候,是乱码。
用UTF8_TO_TCHAR() 或者ANSI_TO_TCHAR()也还是乱码
回复 支持 反对

使用道具 举报

yh362230334 | 2017-10-26 08:32:14 | 显示全部楼层
把你的文件用UTF-8保存就好。

步骤:
文件---高级保存选项---Unicode(UTF-8 无签名) - 代码页65001
回复 支持 反对

使用道具 举报

qq529519633 | 2017-10-26 09:12:09 | 显示全部楼层
yh362230334 发表于 2017-10-26 08:32
把你的文件用UTF-8保存就好。

步骤:

感谢,问题已经解决,是需要使用WideCharToMultiByte转码
回复 支持 反对

使用道具 举报

丑了了 | 2017-12-20 17:26:28 | 显示全部楼层
楼主,请问WideCharToMultiByte转码这个是怎么用的啊?
回复 支持 反对

使用道具 举报

qq529519633 | 2018-2-27 17:19:31 | 显示全部楼层
丑了了 发表于 2017-12-20 17:26
楼主,请问WideCharToMultiByte转码这个是怎么用的啊?

char *cpResult = cs1->cname;
int dwNum = MultiByteToWideChar(CP_ACP, 0, cpResult, strlen(cpResult) + 1, NULL, 0);
wchar_t *widebuff = new wchar_t[dwNum];
MultiByteToWideChar(CP_ACP, 0, cpResult, strlen(cpResult) + 1, widebuff, dwNum);

FString str= FString(widebuff);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

8

主题

40

回帖

178

积分

初阶编码师

积分
178