C++中文乱码(深度解析)

前言

        相信大伙在做c++开发时,都应该遇到过中文显示乱码这个问题.这对于小白来说可能是一个比较头疼的问题之一.. 可能很多人不理解这个中文乱码其原因是什么..今天小编带家人们来分析一下关于乱码产生的原因.....在分析之前先介绍一个汉字编码查询的网页https://www.qqxiuzi.cn/bianma/zifuji.phpicon-default.png?t=M276https://www.qqxiuzi.cn/bianma/zifuji.php

目录

1.源字符集,执行字符集,系统字符集

2.字符常量和字符串字面量在程序中的存储字符集


1.源字符集,执行字符集,系统字符集

编译器转换程序源代码时,所处的环境称为翻译环境(translation environment);编译后程序执行时,所处的环境称为运行环境(execution environment)。

对C语言来说,翻译环境和运行环境是不同的。因此,C语言定义了两个字符集(character set):源代码字符集与运行字符集。

  • 源代码字符集(source character set)是用于组成C源代码的字符集合;
  • 而运行字符集(execution character set)是可以被执行程序解释的字符集合。
  • 操作系统字符集 ,windows中文版默认采用gbk编码

       而程序的运行字符集和操作系统字符集一致才不会出现乱码现象
在许多C语言的实现版本中,这两个字符集是一样的。如果不一样,则编译器会把源代码中的字符常量和字符串字面量转换成运行字符集中的对应元素

这段内容摘自C语言源代码字符集和运行字符集 (biancheng.net)icon-default.png?t=M276http://c.biancheng.net/view/175.html

2.字符常量和字符串字面量在程序中的存储字符集

        程序中字符串在char数组和程序静态常量区采用何种编码来保存字符串的

     1.采用gb2312编码保存的cpp源文件

 

  2.修改执行字符集及例子

 //C++中可以使用这行预处理指令来修改执行字符集
 #pragma execution_character_set("utf-8")
 //#pragma execution_character_set("gbk")

   这是采用gb2312编码保存的源文件,且修改了执行字符集的运行效果图

 查询对应上图的字符集编码表 确实修改了字符串在程序静态区和char数组中的编码

 

 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值