qq529519633 发表于 2017-10-23 18:13:24

UE4 C++ 中文乱码

从数据库获取数据后,用的是char数组来获取中文字符串,之后返回UE4中是FString类型,这时候,中文就没法显示。
例:
char str="你好";
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;
MultiByteToWideChar(CP_ACP, 0, cpResult, strlen(cpResult) + 1, widebuff, dwNum);

FString str= FString(widebuff);
页: [1]
查看完整版本: UE4 C++ 中文乱码