如何在纯文本文件中保留日文字符?

时间:2015-07-06 19:08:11

标签: c++ visual-studio-2010

我的C ++程序是在Visual Studio 2010中构建的,UNICODE选项已打开。程序通过对话框收集CString数据,并将行写入纯文本(.TXT)文件。当我在十六进制编辑器中查看文件时,它显然是使用16位编码编写的。但大多数情况下,写入文件的任何日文字符都会转换为0x003E,这是一个问号,即使在配置为具有日语界面的Windows系统上也是如此。有时(这是我真正不理解的)我从正确编码的客户那里获取文件。所有字符都是16位;文件中的所有罗马字符在高字节中都有0x00,但日文字符使用全部16位。这就是我想要一直发生的事情。

我收到时,通常会使用TextWrangler在Mac(OS X 10.10.3)上显示这些文件。当我告诉TextWrangler使用Shift-JIS编码打开它们时,好的看起来很好。但是我从日本收到的大部分都有问号,应该出现日文字符。

我可以做些什么来确保在写文件时不会破坏日文字符?

另外,我知道我从对话框类中获取的Cstrings数据很好。其中一些是使用AfxGetApp()->WriteProfileString()存储的,它们很好;我能够取回它们,所有日本人仍然是日本人。

以下是我用来编写TXT文件的一些代码:

FILE    *f;
f   =   _tfopen(fullpath, _T("w"));
if (!f)
{
    SAY(_T("File creation error"));
    return;
}
_ftprintf(f, _T("%s\n"), m_3);
_ftprintf(f, _T("%s\n"), m_4);
_ftprintf(f, _T("%s\n"), m_5);
fclose(f);

那个漂亮的香草代码。 m_3通过m_5这里是Cstring变量,绝对是wchar_t。我的数据在哪里被破坏,我该怎么办呢?

0 个答案:

没有答案