ansi编码转换unicode_0的unicode编码

ansi编码转换unicode_0的unicode编码之前一直对Unicode、ANSI、ASCII、UTF-8、string、wstring的概念混淆不清,今天特地查询资料整理下。ANSI编码ANSI编码和Unicode编码都是字符代码的一种表现形式。也就是一个字符既可以编码ANSI也可以编码成Unicode,只是表现形式不一样罢了。首先来看下ANSI的全称:AmericanNationalStandardInstitute,美国国家标准协会。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

之前一直对Unicode、ANSI、ASCII、UTF-8、string、wstring的概念混淆不清,今天特地查询资料整理下。

ANSI编码

ANSI编码和Unicode编码都是字符代码的一种表现形式。也就是一个字符既可以编码ANSI也可以编码成Unicode,只是表现形式不一样罢了。

首先来看下ANSI的全称:American National Standard Institute,美国国家标准协会。

虽然名字是美国的,但是不同国家和地区制定了相应不同的标准,由此产生了GB2312、GBK(简体中文的ANSI编码)、Big5、Shift_JIS(日文的ANSI编码)等各自的编码标准,这些使用1~4个字节来代表一个字符的各种外文字符延伸编码方式,称为ANSI编码。可以看出不同的ANSI码相互之间并不兼容,无法将两种相同的语言的文字,存储在同一段ANSI编码的文本中。

ANSI编码的特点

对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表一个字符,而这之外的字符通常是使用0x80~0xFF范围内的两个字节来表示一个字符。比如汉字找那个的’中’在简体中文中使用[0xD6, 0xD0]这两个字节存储。

这一点是Unicode编码和ANSI编码之间最大的不同。Unicode编码都是两个字节表示一个字符。

ASCII码

由美国国家标准协会制定,全称:American Standard Code for Information Interchange,美国标准信息交换码。其使用7位二进制数共128个组合来表示所有的大写和小写字母、数字0~9、标点符号以及在美式英语中使用的特殊控制字符。

由于ASCII码字符有限,所以现在也存在扩展的ASCII码,也就是8位ASCII码。

Unicode编码

Unicode字符集编码全称:Universal Multiple-Octet Coded Character Set,通用多八位编码字符集。Unicode字符集是国际组织制定的可以容纳世界上所有文字和符号的编码方案。

Unicode编码为每个字符设定了同一并且唯一的二进制编码,以满足跨平台、跨语言进行文本转换、处理的要求。Unicode标准始终使用十六进制数字。

但是Unicode只是一个符号集,之规定了符号的二进制代码,却没有规定这个二进制代码该怎么存储。

UTF-8编码

UTF-8全称:8bit Unicode Transformation Format,8比特Unicode通用转换格式。UTF-8是一种针对Unicode的可变长度字符编码。可以表示Unicode标准中的任何一个字符,且其编码中的第一个字节仍然与ASCII兼容。

UTF-8用1~4字节对Unicode进行编码。对于0x00~0x7F之间的编码与ASCII编码完全相同。

string和wstring

basic_string

string是basic_string在char上的实例化,wstring是basic_string在wchar_t上的实例化。

char wchar_t

char是窄字符,为1个Byte,wchar_t是宽字符,在Linux上为4Bytes,在Windows上为2Bytes。

char和wchar_t是否和Unicode有关?

Linux上,string一般以UTF-8格式编码。在Linux情况下,应该使用string。

Windows上,如果应用程序使用char,这些char string将会使用本地charset/codepage上的形式显示在显示器上;如果是Unicode-based应用程序,Windows使用wchar_t——2bit宽,使用UTF-16编码。

应用程序使用char为Multibyte,因为每个glyph由一个或多个char组成;使用wchar_t为widechar,因为每个glyph由一个或两个wchar_t组成。(详情请见MultiByteToWideChar和WideCharToMultiByte API函数)

在Window上,除非使用了GTK+或者QT这样的框架,否则你应该使用wchar_t。事实上,Windows对wchar_t其作用,所以使用char的应用程序,他们的char string都会被转化为wchar_t string。

string和wstring对比

  • Linux总是使用string,而Windows上总是使用wstring,需要跨平台看toolkit
  • 待整理

博客原文地址:http://jerkwisdom.github.io/code/common/unicode-and-ansi/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190269.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [core]-ARMV7-A、ARMV8-A、ARMV9-A 架构简介「建议收藏」

    Armv9-AarchitectureArmv9-A架构建立在Armv8-A架构的基础上并向前兼容。Armv9-A架构构成了Arm基础系统架构的基础——该规范概述了一种标准,可确保硬件和固件在系统级的广泛应用中具有兼容性。Armv9-A架构引入了一些主要的新特性:SVE2:extendingthebenefitofscalablevectorstomanymoreusecasesRealmManagementExtension(RME):extend

    2022年4月15日
    139
  • 神经网络学习(十三)卷积神经网络的MATLAB实现

    神经网络学习(十三)卷积神经网络的MATLAB实现系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。卷积神经网络回顾上一节,我们简单探讨了卷积神经网络的反向传播算法,本节我们着手实现了一个简单的卷积神经网,在此之前先以最基本的批量随机梯度下降法+L2正则化对对卷积神经网络的反向传播算法做一个很简单回顾。需要确定参数有:小批量数据的大小mmmCNN模型的层数LLL和所有隐…

    2022年9月22日
    4
  • goland 2022.01 激活码【2021.10最新】

    (goland 2022.01 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    234
  • Linux下文件搜索、查找、查看命令

    Linux下文件搜索、查找、查看命令Linux下文件搜索、查找、查看命令1、最强大的搜索命令:find一、根据文件或目录名称搜索二、根据文件大小搜索三、根据所有者和所属组搜索四、根据时间属性搜索五、根据文件类型或i节点搜索六、组合条件搜索  2、在文件资料中查找文件:locate  3、搜索命令所在的目录及别名信息:which 4、搜索命令所在的目录及帮助文档路径:whereis5、在文件…

    2022年7月26日
    9
  • softmax函数导数「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。

    2022年4月14日
    45
  • 股票购买拐点在哪里

    股票购买拐点在哪里 股票购买拐点在哪里   逢低买,当然最好买在拐点。股价始向上的时候。   不过当主力刚开始吸筹时,反复震荡难免,没准还来一个诱空,这时介入心情极坏,毫无成就感,白受折磨。所以第一步,总是等主力先吃饱喝足,他是老大,我是小弟。   等主力吃够了喝足了,他会拉上去一点,最理想的介入点,就是等他洗盘结束时。当股价开始下跌,不必介入,再等,待拐点出现介入。   拐点在哪里呢?黄金分割?神奇数

    2022年6月26日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号