解决方案 »
- 引用对象的问题
- MenuItemFromPoint的参数从何而来
- [请教]如何获取别人网站上asp页面用Post方式传递的参数啊?
- 怎样根据Schema来验证XML的和法性
- 一个简单的问题
- 急!!昨晚改好的工程下,一个对应对话框的.CPP文件,今早打开时候提示错误:“The file is binary and cannot read”,怎么还原到可读出
- 我是新手,问个很幼稚的问题
- 怎样从进程ID得到进程的名字?
- 请教一下............
- OCX播放视频问题,视频播放可以,但是过一段时间IE就崩溃了,会是什么原因呢
- 关于boost asio一个性能改进问题
- MFC 将进程窗口嵌入到其它进程的窗口中
Unicode,是设置在Unicode字符集下吗
1、程序必须是Unicode的
2、txt或者ini等文件中保存的必须是Unicode编码的文本,由于txt和ini文件默认使用本地的ANSI编码的,即使程序使用Unicode,也没法正常显示的
1、如果是程序生成的:在文件中加上Unicode头,然后向文件中写入Unicode字符
2、如果是预先设定好的:可以先将文件另存为Unicode文件,然后再将需要填入的字符拷贝进来
你首先要做的,是先判断这个文件的编码
先读文本文件的头2个字节, 如果是 0xff 0xfe 的话, 那你就用 wchar_t* 或 LPTSTR 类型的变量去读数据, 否则用 char* 或 BYTE* 类型去读当然, unicode 编码的文本你也可以用 char 或 BYTE 读出来, 但如果不处理就直接显示的话, 结果就像你所说的那样会乱码
你可以用 MultiByteToWideChar 来进行 ANSI 转换成 unicode
相反也可以用 WideCharToMultiByte 来进行 unicode 到 ansi 的转换
转换字节:
#define REVERSE(x) ((((x) & 0x00FF) << 8 | (((x) & 0xFF00) >> 8)) wchar_t *wTemp = szwBuffer;
for (; *wTemp != 0x0000; ++wTemp)
{
*wTemp = REVERSE(*wTemp);
}
在显示大端文件时是乱码,再加上这个字节转化运行之后就什么结果都没有