WriteFile写中文字符串 TxT显示乱码
2012-04-26 13:56
274 查看
写UNICODE字符串到TXT文件里,打开显示乱码,查了相关资料,解决的方法有两种:
1、在写入前插入0xFEFF,让系统认为是Unicode编码。注意,写入后用十六进制编辑器查看高低位是互换的
Unicode:0xFEFF
UTF8:0xEFBBBF
//这是一种解决乱码的方法,在前面写入0xfeff,以unicode方式打开
// WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文不会乱码
// WriteFile(hFile, &a, 2, &dwBytesWrite, NULL);
// if (WriteFile(hFile, szText,dwNumText*2, &dwBytesWrite, NULL))//第三个参数是写入的byte数,因为是宽字符,所以个数要乘以2
//第二种方法,宽窄字符转化
int a = WideCharToMultiByte(CP_ACP, NULL, szText, -1, LPSTR(szTextAnsi), MAX_PATH, NULL, FALSE);//Unicode转换为ANSI,a的值包括了字符串最后的0
if (WriteFile(hFile, szTextAnsi,a-1, &dwBytesWrite, NULL))//写入的时候最后的0不用写入所以要用a-1
{
MessageBox(hwnd,TEXT("写入成功"),TEXT("成功"),0);
}
else
{
MessageBox(hwnd,TEXT("写入失败"),TEXT("出错"),0);
}
1、在写入前插入0xFEFF,让系统认为是Unicode编码。注意,写入后用十六进制编辑器查看高低位是互换的
Unicode:0xFEFF
UTF8:0xEFBBBF
//这是一种解决乱码的方法,在前面写入0xfeff,以unicode方式打开
// WORD a = 0xfeff;//写入0xfeff让记事本以Unicode方式打开,中文不会乱码
// WriteFile(hFile, &a, 2, &dwBytesWrite, NULL);
// if (WriteFile(hFile, szText,dwNumText*2, &dwBytesWrite, NULL))//第三个参数是写入的byte数,因为是宽字符,所以个数要乘以2
//第二种方法,宽窄字符转化
int a = WideCharToMultiByte(CP_ACP, NULL, szText, -1, LPSTR(szTextAnsi), MAX_PATH, NULL, FALSE);//Unicode转换为ANSI,a的值包括了字符串最后的0
if (WriteFile(hFile, szTextAnsi,a-1, &dwBytesWrite, NULL))//写入的时候最后的0不用写入所以要用a-1
{
MessageBox(hwnd,TEXT("写入成功"),TEXT("成功"),0);
}
else
{
MessageBox(hwnd,TEXT("写入失败"),TEXT("出错"),0);
}
相关文章推荐
- WriteFile写中文字符串TxT显示乱码
- WriteFile写UNICODE字符串 TxT显示乱码
- Ubuntu 12.04 LTS中文txt文件显示乱码问题
- 解决C#中txt文档导入数据库时,中文显示乱码的问题
- Flex asSql库在连接MySql时显示中文字符串为乱码的问题
- 解决QT中文字符串在osg中显示乱码的问题
- 文章标题 解决IDEA读取txt文本中显示的中文乱码问题
- ubuntu下txt文件中文显示乱码的方法【转载】
- mysql插入中文字符串乱码显示???
- 解决C#中txt文档导入数据库时,中文显示乱码的问题
- Ubuntu10.04下语言安装以及txt文件显示中文乱码问题的解决
- Linux下打开txt文件中文显示乱码的解决方案
- Ubuntu 12.04 LTS 中文txt文件显示乱码问题
- ubuntu 下的翻译软件 openyoudao 以及 txt文档中文显示乱码解决
- Ubuntu 12.04 LTS中文txt文件显示乱码问题
- 解决android 显示中文字符串乱码的问题
- Ubuntu 下TXT中文显示乱码解决方法
- 解决QT中文字符串在osg中显示乱码的问题
- 读中文txt里显示乱码问题
- 各种乱码问题:mysql 中文显示乱码, C#数据流写到Txt文档显示乱码问题,C# 连接mysql乱码 mysql Front 乱码,navicat for mysql乱码