读取具有日语文本的CSV文件.(C )



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中得到垃圾。

注意:

  1. 我只能使用流读取CSV。
  2. 不允许静态内存分配。

如何成功阅读日语文本?

丢失检查是否在字符串中添加UTF-8 BOM,如果是的,请跳过。

它是通过使用cp_acp编码来实现的。

最新更新