网易博客旧文----CString显示中文的一些认识

embedded/2024/10/19 7:35:45/

CString显示中文的一些认识
2011-10-31 16:01:01| 分类: MFC | 标签: |举报 |字号大中小 订阅

当用CString格式话输出时,若有中文字符,则输出时有时会碰到问题,即显示为乱码。
在常规方式下,用CString的format方法,调用%c的方式,在中文为ASC编码方式时,这样没有任何问题。
在网上查了一个
int Lenth = m_strTxt.GetLength();
for(int i=0;i<Lenth;i++)
{
char c = m_strTxt.GetAt(i);
//是中文字符
if(c<0||c>255)
{
TRACE(“%s”,m_strTxt.Mid(i,2));
i++;
continue;
}
//是英文字符
else
TRACE(“%c”,c);
}
这个无非是解决TRACE输出问题,起始直接格式化到CString中,然后调用TRACE输出即可
但是当程序用UNICODE方式编译时,用%c输出的就是乱码
经过研究,发现CString在UNICODE方式下,内部编码用的是UTF8,因此需要将中文转换为UTF8方式,才能正常输出。
以下举例说明:
char test1[2];
test1[0] = 0xbd;
test1[1] = 0xda;
test1[2] = 0;
wchar_t pwc[2];
int cc = MultiByteToWideChar(CP_ACP, 0, test1, 2, pwc, 10);
pwc[cc] = 0;
str = pwc;
TRACE1(“%s”,str);
以上显示的中文为“节”,ASC的编码就是BDDA,但UTF8的编码就是8A82
至于test中的两个值,可以用以上网上获取的方式,判断是否大于127的方式来一次取两个。
当需要显示的数据是从文件中获取时,通过判断文件是否为UTF8格式还是ASC编码方式
可以作出是否转换的策略。可以看到当文件为UTF8方式时,文件开始的标识是
EFBBBFE8,好像第四个字节可以是E7或E8,我在ue力测试出来是E8。
另外,CstdioFile虽然继承自CFile,而且MSDN中只是介绍其ReadString和WriteString函数
实际上Read函数和CFile也有不同,我发现,它会将其中的0x0D去掉,即原来是0x0D,0x0A,实际读上来就只有0x0A了。
网上资料:0xFE 0xFF是unicode的header,而utf-8的是0xEF 0xBB 0xBF


http://www.ppmy.cn/embedded/127218.html

相关文章

ChatGPT背景下,高职人工智能技术应用专业的人才培养

一、引言 ChatGPT&#xff0c;即聊天生成预训练变换器&#xff0c;由美国OpenAI公司开发&#xff0c;自2022年11月首次亮相以来&#xff0c;已成为人工智能领域的一个标志性成就。这款聊天机器人利用先进的人工智能技术&#xff0c;处理自然语言&#xff0c;能够精准把握用户的…

PHP商会招商项目系统一站式服务助力企业腾飞

商会招商项目系统——一站式服务&#xff0c;助力企业腾飞 &#x1f680;&#x1f4bc; &#x1f680; 开篇&#xff1a;企业成长的加速器&#xff0c;商会招商项目系统来袭 在竞争激烈的市场环境中&#xff0c;企业如何快速找到适合自己的发展路径&#xff0c;实现腾飞&…

Appium环境搭建、Appium连接真机

文章目录 一、安装Android SDK二、安装Appium-desktop三、安装Appium Inspector 一、安装Android SDK 首先需要安装jdk&#xff0c;这里就不演示安装jdk的过程了 SDK下载地址&#xff1a;Android SDK 下载 1、点击 Android SDK 下载 -> SKD Tools 2、选择对应的版本进行下…

【Go语言】安装及使用基础教程

文章目录 1. 下载安装Go官网安装使用 Homebrew 安装 (Mac)创建工作目录 (Workspace)设置环境变量通过 VSCode 扩展商店安装 Go 插件处理权限问题 2. Hello, World 示例3. 语法基础变量声明常量数组切片&#xff08;Slice&#xff09;Map&#xff08;集合&#xff09;控制结构fo…

【测试】BUG篇——BUG

bug的概念 定义&#xff1a;⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault)&#xff0c;这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。 准确的来说&#xff1a; 当且仅当规格说明&am…

Windows 11 24H2版本有哪些新功能_Windows 11 24H2十四大新功能介绍

距离上次发布的23H2版本已经过去了一年时间&#xff0c;现在&#xff0c;Win 11的24H2版本终于等到了&#xff0c;微软已经全面公开发布Win11 24H2版本&#xff0c;版本号为26100.1742&#xff0c;此次官宣的版本包括了消费者版、商业版、LTSC 2024版等&#xff0c;各种语言版本…

【基于ARM深入分析C程序】1--ARM架构与汇编、分析C语句`a++`的执行过程

【基于ARM深入分析C程序】1–ARM架构与汇编、分析C语句a的执行过程 文章目录 【基于ARM深入分析C程序】1--ARM架构与汇编、分析C语句a的执行过程一、3个操作指令二、CPU是怎么知道执行这三条操作指令的&#xff1f;2.1 CPU的架构 2.2 寄存器 本文作为学习笔记&#xff0c;围绕的…

如何使用Pandas库处理大型数据集?

如何使用Pandas库处理大型数据集? 处理大型数据集是数据分析中的一个挑战,尤其是在资源有限的情况下。Pandas是Python中非常流行的数据处理库,但它在处理非常大的数据集时可能会遇到内存限制的问题。因此,我们需要一些策略来提高Pandas处理大型数据集的效率。以下是使用Pa…