最近在做UE4读取csv表的功能,但是通过FFileHelper::LoadFileToString取读文本时,如果文件中有中文,则读取后会产生乱码。经过一番查找后终于解决,现在我把原因、处理方法记录如下:
UE4版本:4.26
为什么会有乱码?
用wps把xls(Excel表格格式)导出成csv时,默认文件编码是GB2312(简体中文),不能选择其它编码(如UTF8),但是UE4读取这个文件时是按照UTF8格式进行读取的,所以会有乱码(具体逻辑在FFileHelper::BufferToString中)。那么也许你会问,UE4为什么这么傻,怎么读个文本文件都读不对。这是因为UE4根本识别不出这个文件的格式,后面会详细说。
简单的处理方法
1、将csv转换成UTF8就没问题了。
2、用Excel导出csv。在网上看到用Excel导出时可以选择UTF8格式,但是wps好像没有这个功能。(https://jingyan.baidu.com/article/6fb756ecc14e4e651958fb52.html)
我的处理方法
在Windows上用win32系统函数MultiByteToWideChar,将GB2312转换成UTF16,