首页 > 解决方案 > 无法通过 CStdioFile 将中文字符写入 ANSI 文件?

问题描述

我在 VC++ 2008 中创建了一个 Unicode 项目。

然后我编写以下代码:

    CStdioFile File;

    if (File.Open(_T("F:\\Test.txt"), CFile::modeCreate | CFile::modeWrite | CFile::typeText | CFile::shareDenyWrite))
    {
        File.WriteString(_T("你好"));
        File.Close();
    }

我认为由于 File.WriteString(_T("你好")) 正在将 Unicode 字符串写入文件,而 CStidoFile 默认为 ANSI 格式。因此,Unicode 字符串将在当前线程代码页(即中文)中转换为 ANSI 字符串。

但是,打开文本文件后,我看到它完全是空的,文件中没有写入任何内容。为什么?

标签: filevisual-c++unicodeansi

解决方案


使用模式打开文件,CFile::typeUnicode而不是CFile::typeText.


推荐阅读