英文可以!对文件时,读出的中文是乱码!不知道为什么?
解决方案 »
- 传递this指针给新线程的问题
- 对话框的成员函数里创建一个与指定设备兼容的内存设备上下文环境(DC)//怎么内存错误?
- ◆◆◆VC怎样通过编程实现操作PDFCreator虚拟打印机进行PDF文件生成
- 在一个static控件上画多个图遇到的难题
- 请问如何读取word文档中的表格中的数据?
- gdi+ 中image初始化的问题---- 一个初入gdi+学生的问题
- 动态数组
- 如何向一个应用程序发送消息?
- 创建了一个CBitmap对象,如何将其关联的位图传输给另一台机器?(===急切盼望答案,谢谢===)
- 各位虾哥虾妹:偶是新手,想请教什么地方有关于程序设计的练习题目之类的网站,越多越好,偶想多练习一下,可惜找不到题目,如果有买的书也行,谁给推荐一本!!
- 一百分,doc/view框架时如何在view中使用CListctrl? msn的分组列表是不是使用CListctrl?
- 关于多线程问题
binary mode试过,也不行!
[email protected]
addFile.Open(m_filePath,CFile::modeRead|CFile::typeText,NULL);
CString name=TEXT("");
addFile.ReadString(name);
MessageBox(name,NULL,MB_OK);
得到的就是乱码,注意是UNICODE环境,非UNICODE环境一切正常!
CStdioFile addFile;
addFile.Open(m_filePath,CFile::modeWrite|CFile::typeText,NULL);
CString name=TEXT("a中华人民共和国");
addFile.WriteString(name);
MessageBox(name,NULL,MB_OK);
结果文件里只有一个a
2. CStdioFile is a c style stream, support unicode ?
应该加上close();支持,英文行,中文不行
我试验了,CFile也不能写unicode中文!
谢谢你的热心!
UNICODE文本标志是(用UltraEdit的16进制打开)在文件的开头两个数据应该是 0xFF 0xFE
因为我们没有写这两个值,所以看起来就是乱码。“语文"的ANSI文本是这样的:
ED 8B 87 65
"语文"的UNICODE文本是这样的:
FF FE ED 8B 87 65
nOpenFlags 没有一个指定是按 UNICODE还是按照 ANSI来进行的。就因为这样所以这些函数或者API就没有办法判断是否写 0xFF 0xFE标志位。
CString name=TEXT("a中华人民共和国");
到下一行的时候.
监视的name="a";
{
// TODO: Add your control notification handler code here
CFile myFile;
myFile.Open(_T("ab.txt"),CFile::modeCreate | CFile::modeWrite);
static const TCHAR sz[] = _T("语文数学abcde物fghjik理");
#ifdef _UNICODE
char szBOM[] = "\377\376"; //注意:为什么是这两个数字?我也搞不清楚啊!
#define SIZEOFBOM 2
myFile.Write(szBOM, SIZEOFBOM);
#endif
myFile.Write(sz, lstrlen(sz)*sizeof(TCHAR));
myFile.Close();
}
用CString .
addFile.Open(m_filePath,CFile::modeWrite|CFile::typeText,NULL);
TCHAR name[]=TEXT("a中华人民共和国");
addFile.WriteString(name);
MessageBox(name,NULL,MB_OK);
我还想TCHAR在VC中能不能用呢!
addFile.WriteString(name);完了用UltraEdit(不要用NotPad)看看成功没有.
用八进制的数表示字符.
SFM checks the file to see if it is formatted in Unicode. Unicode files can be identified when opened with a hexadecimal editor by the first four nibbles, which are always FF FE (assuming UTF-8 encoding). SFM : Services For Macintosh
用CFile::typeBinary是可以写入的!但写入的东西如果想用wordpad查看的话,
需要写入oxff和oxfe以标记写入的是unicode读取的时候要把第一行的oxff和oxfe delete掉。就可以得到正确的unicode码了!
结帖,发分!
继续讨论[email protected]
ttzzgg_80713(50),
StdAfx(任杰)(50)