最近在 vscode 中借助 gcc 编译器来配置 c

本文介绍了在Visual Studio Code(VSCode)中使用gcc编译C语言时遇到的GBK编码导致的中文乱码问题。通过探讨字符编码、多字节字符和宽字符的概念,作者分享了GBK编码的细节,并提供了通过设置-fexec-charset选项避免乱码的方法。此外,还展示了如何在C语言中使用宽字符的例子。
摘要由CSDN通过智能技术生成

  最近在 vscode 中借助 gcc 编译器来配置 c
  
  语言开发环境时,发现中文编码存在乱码问题。再加上最近学习到多字节字符与宽字符,搅在一起,搞得很乱,就把自己的理解写下来,供有需者参考吧。
  
  1. 字符编码
  
  先来看维基中关于字符编码的描述
  
  字符编码
  
  字符编码(英語:Character
  
  encoding)、字集碼是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位元组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号編號,並用7位元的二进制來表示这个整数。通常會額外使用一个扩充的位元,以便于以1个字节的方式存储。
  
  在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐漸成為標準。但这些字符集的局限很快就变得明显,于是人们开发了許多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码
  
  关于字符编码的详细介绍,可以参考 字符编码笔记
  
  Windows 现在默认所用的汉字编码仍是 GBK,而 字符编码笔记中没有提及,, 因此以下对 GBK 编码进行相应的介绍。
  
  1.1 GBK 编码
  
  汉字内码扩展规范
  
  汉字内码扩展规范,称GBK,全名为《汉字内码扩展规范(GBK)》1.0版,由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司和电子工业部科技与质量监督司1995年12月15日联合以《技术标函[1995]229号》文件的形式公布。
  
  GBK共收录21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。
  
  GBK的K为“扩展”的汉语拼音(kuòzhǎn)第一个声母。英文全称Chinese Internal Code Extension
  
  Specification。
  
  字符有一字节和双字节编码,00–7F范围内是第一个字节,和ASCII保持一致,此范围内严格上说有96个文字和32个控制符号。
  
  之后的双字节中,前一字节是双字节的第一位。总体上说第一字节的范围是81–FE(也就是不含80和FF),第二字节的一部分领域在40–7E,其他领域在80–FE
  
  也就是说在 GBK 编码中
  
  对于单字节的字符,字节的第一位为 0,后面 7 位为这个符号的 Unicode 码
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值