unicode字符集下CStdioFile无法写入中文的解决方案

    CStdioFile file;
    file.Open(_T("c:\\a.txt"),CFile::modeCreate |CFile::modeReadWrite);
    file.WriteString(_T("hello world ,第一句话"));
    file.Flush();
    file.Close();

默认状态下,中文无法显示。

    _tsetlocale( LC_CTYPE, _T("chs"));//设置语言环境为中文。如果主机安装的是中文版windows系统,可以设置_tsetlocale( LC_ALL, _T(""))为系统默认语言环境;
    CStdioFile file;
    file.Open(_T("c:\\a.txt"),CFile::modeCreate |CFile::modeReadWrite);
    file.WriteString(_T("hello world ,第一句话"));
    file.Flush();
    file.Close();

unicode字符集下CStdioFile无法写入中文的解决方案

时间: 2024-10-01 06:08:44

unicode字符集下CStdioFile无法写入中文的解决方案的相关文章

Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家分享. 先总结一下网上找到的三种转换的方法: 方法一:使用函数setlocale setlocale(LC_ALL,"chs"); 需要包含头文件#include<locale.h> 此方法的思路是配置地域化信息.通常在需要输入输出中文的时候设置一下,就没问题了,setloca

Unicode字符集下CString与char *相互转换

经常遇到CString转换char*时只返回第一个字符.原因是因为在Unicode字符集下CString会以Unicode的形式来保存数据,强制类型转换只会返回第一个字符.所以直接转换在基于MBCS的工程可以,但在基于Unicode字符集的工程中直接转换是不可行的.下面就具体看一下,在Unicode字符集下如下进行CString与char*的互相转换. 在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:M

VC编程unicode字符集下char数组转化为CString

struct sockaddr_in addr; int addr_len = sizeof(struct sockaddr_in); CString strState; //记得要用char接收数据,因为网络中传输的数据只是和编码方式 无关的字节流 //所以接收到字节流后再转化为宽字符unicode编码方式用于显示和 写文件 char tempSocketReceive[MAXDATALENGTH] = ""; memset(tempSocketReceive, 0, MAXDATA

VC中unicode字符集下sendto发送char数组

UpdateData(true);//刷新控件的值到对应的变量 int len = m_strSend.GetLength(); if (0 == len) { strState.Format(L"请填写需要发送的数据!"); GetDlgItem(IDC_STATIC_SEND_STATE)->SetWindowText(strState); //动态指定static text显示内容 return; } int byteLenSend = (len + 1)*sizeof(w

通过编写串口助手工具学习MFC过程&mdash;&mdash;(三)Unicode字符集的宽字符和多字节字符转换

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (三)Unicode字符集的宽字符和多字节字符转换 在上一节<(二)通过&qu

多字节字符集与Unicode字符集

在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset). 多字节字符集: 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个 字符,总共表示128个字符,其中包括了 英文字母.数字.标点符号等常用字符.之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号.后来,由于各国语言的加入,

C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【一】

以下代码文件以CStdioFile向无法向文本中写入中文(用notepad.exe查看不到写入的中文)CStdioFile file;file.Open(-);file.WriteString(_T("abc你好"));//只能写入abc解决办法:使用setlocale语句设定区域#include <locale>//头文件CStdioFile file;file.Open(-);char* old_locale = _strdup( setlocale(LC_CTYPE,

使用cstdiofile在vs2010中无法写入中文的问题

在VC2010环境下, 以下代码无法实现使用CStdioFile向文本文件中写入中文(用notepad.exe查看不到写入的中文) CStdioFile file; file.Open(…); file.WriteString(_T("abc你好"));//只能写入abc 解决办法: 使用setlocale语句设定区域 #include <locale>//头文件 CStdioFile file; file.Open(…); char* old_locale = _strd

刨根究底字符编码之十——Unicode字符集的字符编码方式CEF以及码点、码元

Unicode字符集的字符编码方式CEF以及码点.码元 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用两个或两个以上字节. 比如,汉字"严"的Unicode码(Unicode码点值.Unicode编号)是十六进制数4E25,转换成二进制数有15位(100 1110 0010 0101),对"严"这个字符的编号进行编码的话,至少需要2个字节.表示其他更大编号