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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 看完此文,必须明白一致性Hash算法「建议收藏」

    看完此文,必须明白一致性Hash算法「建议收藏」  一致性Hash算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(HotSpot)问题,初衷和CARP十分相似。一致性Hash修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。  一致性Hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Bal…

    2022年9月26日
    0
  • 视频直播连麦技术详解「建议收藏」

    视频直播连麦技术详解「建议收藏」前言:随着带宽、Wifi的不断升级,手机的普及,直播技术不断突破,各种门槛在降低,全民直播时代已经来临。直播也深入到各行各业,比如说在线教育,还有财经行业等,也渐渐成为各行各业的标配。云帆加速自成立以来就一直致力于流媒体领域企业服务,尤其对于直播,目前已经推出了针对于不同场景的直播云解决方案,在保证广大用户使用体验的前提下,为客户节省更多的研发成本。无论是传统企业转型,或者是创业企业,云帆加速都…

    2022年7月24日
    32
  • Linux-清除root管理员密码

    Linux-清除root管理员密码

    2021年8月7日
    62
  • VirtualBox下安装ubuntu server 16.04

    VirtualBox下安装ubuntu server 16.04

    2021年10月28日
    45
  • Window永久关闭默认共享

    windows默认共享你如果是在这里关闭的,开机之后默认共享文件夹又是打开的。管理工具—计算机管理—共享文件夹–共享下面介绍一种简单的永久关闭默认共享文件夹。1.找到window的开机自启动文件夹,注:这是所有用户登录都会开机自启动文件夹。C:\ProgramData\Microsoft\Windows\StartMenu\Programs\StartUp2.创建一个bat脚本,然后开机就能自动关闭默认共享文件夹。…

    2022年4月7日
    52
  • 列车调度(PTA)

    列车调度(PTA)7-11列车调度(25分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条

    2022年7月1日
    20

发表回复

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

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