csv文件中有日语文本。通过记事本打开时,它说其编码是UTF-8。
我在stackoverflow上读取,对于UTF-8,首先在单个流中读取文件,然后将其转换为wstring。
我正在使用以下代码将字符串转换为wstring。
wstring stow(const std::string& str){
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
std::wstring wstrTo( size_needed, 0 );
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
return wstrTo;}
但是,在日语文本的情况下,我在返回的wstring中得到垃圾。
注意:
- 我只能使用流读取CSV。
- 不允许静态内存分配。
如何成功阅读日语文本?
丢失检查是否在字符串中添加UTF-8 BOM,如果是的,请跳过。
它是通过使用cp_acp编码来实现的。