CStdioFile::WriteString 不能写入中文问题

解决办法如下:

(1)、将写入字符串转换编码为:ANSI

	char* pBuffer = NULL;
	long lBufferSize;

	lBufferSize = WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, m_sRtf, -1, NULL, 0, NULL, NULL);
	pBuffer = new char[lBufferSize + 1];
	WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, m_sRtf, -1, pBuffer, lBufferSize + 1, NULL, NULL);

	CFile file(_T("E://a.rtf"), CFile::modeCreate | CFile::modeWrite);
	file.Write(pBuffer, lBufferSize);
	file.Close();
</pre><pre name="code" class="cpp"><span style="font-size:24px;">(2)、写入之前调用如下函数:</span>
<span style="font-size:24px;">
</span>
</pre><pre name="code" class="cpp"><span style="white-space:pre">	</span>char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
	setlocale( LC_CTYPE, "chs" );

</pre><pre name="code" class="cpp"> <span style="font-size:24px;">(3)、写入结束后调用如下函数:</span>
<span style="white-space:pre">	</span>setlocale( LC_CTYPE, old_locale );
	free( old_locale );//还原区域设定
时间: 2024-10-03 13:46:58

CStdioFile::WriteString 不能写入中文问题的相关文章

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字符集下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"));//设置语言环境为中文.如果主机安装的是中

jsp页面写入中文到mysql时出现了乱码(转)

今天自己在用jsp把中文写入mysql的时候出现乱码,从数据库中读取出来的时候也显示为“??”,感觉应该出现了编码转换过程中的字符信息丢失.然后在mysql中直接执行该命令,发现中文是正常的,所有认为是在往数据库中写中文的时候出现了问题. 在网上找了一会,发现不少解决方法,就转了一篇 过来,这个刚好能解决自己的问题.     在此表示感谢. 今天遇到了在jsp页面写入中文到mysql时出现了乱码,已经漫长的过程,问题终于解决了.         先说下自己的开发环境:jsp+Eclipse+my

cookie写入中文出错解决办法

环境:tomcat7,Java8 当cookie写入中文会引发异常.所以这样看来Cookie默认支持的编码方式是ASCII码.不能对中文进行编码和解码. 解决办法如下 创建Cookie的时候: Cookie cookie = new Cookie(name,URLEncoder.encode(value, "UTF-8")); 读取Cookie的时候: String value = URLDecoder.decode(cookie.getValue(), "UTF-8&quo

vscode文件写入中文乱码

C语言在vscode中写入中文时出现乱码: 网上有些方法,但是试过没有用,还是显示乱码 以下方法亲测有效: 扩展中搜索"gbk",安装该扩展,中文就可以正常显示了 原文地址:https://www.cnblogs.com/pfeiliu/p/12680849.html

hibernate mysql写入中文乱码 解决

启动hibernate项目,自动创建表,插入数据之后发现写入表里的数据里的中文是乱码.按如下方法解决了: 修改数据库的字符集为UTF-8,这个可以通过mysql的客户端软件里右键要修改的数据库的属性更改. 修改Client默认字符集为UTF8.windows下在mysql安装目录(我的计算机操作系统是Windows 7 64,默认的安装路径在:C:\Program Files (x86)\MySQL\MySQL Server 5.0)下找到my.ini,将里面的default-character

mysql写入中文乱码

乱码可谓是程序猿的常见问题了,下面就大致介绍几种常见的情况.常见于页面.前台到后台传值.写入到数据库这三个方面. 1.页面乱码 页面相对是最为容易解决的,往往是在相应的jsp页面或者html页面设置相关的字符集即可.如 <%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2.传值乱码 在传值过程中,也是乱码出现的频繁

解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错

问题:  UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 7: ordinal not in range(128) 分析:在网上查找,原来python的str默认是ascii编码,和unicode编码冲突,所以无法 中文字符串变量写入excel. 解决:在代码中加入下面几行就可以了. import sys reload(sys) sys.setdefaultencoding('utf8')