file - 无法通过 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 字符串。
但是,打开文本文件后,我看到它完全是空的,文件中没有写入任何内容。为什么?
解决方案
使用模式打开文件,CFile::typeUnicode
而不是CFile::typeText
.
推荐阅读
- java - MongoDB Java驱动程序将嵌套对象的id字段转换为_id
- python - Tkinter 主题和背景
- mysql - mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'@'localhost' (使用密码: YES)
- javascript - 在删除 baseHref Angular 后状态导航不起作用
- django - 如何为不具有相同值的 2 个字段添加约束?
- css - 文本与 justify-content: space-evenly 奇怪地对齐;
- prolog - Prolog - 如何将时间戳设置为谓词中的参数?
- sql - sqlite:如何以不平凡的方式修改列内容[示例]
- python - 如何在seaborn distplot的模式下画一条垂直线
- json - 获取地址的政治/学区