字符集与编码

2023-11-12

字符集就是客观世界上存在的各种语言符号,如英语26个字符,汉字,拉丁字符等
编码就是将字符集用二级制表示出来的一种规范。
常用字符集有
ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。
ASCII,很有名,也很简单。
GB2312对ASCII进行修改,
一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。对于人名古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBKGB 18030汉字字符集的出现。

当计算机传到世界各个国家时,为了适合当地语言和字符,设计和实现类似GB232/GBK/GB18030/BIG5的编码方案。这样各搞一套,在本地使用没有问题,一旦出现在网络中,由于不兼容,互相访问就出现了乱码现象。为了解决这个问题,一个伟大的创想产生了——Unicode。Unicode编码系统为表达任意语言的任意字符而设计。他使用4字节的数字来表达每个字母,符号,或者表意文字。每个数字代表唯一的至少在某种语言中使用的符号。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符。(注意这里的数字4字节长度,并不是计算机中存储的字符的实际的长度,Unicode是字符集,不是编码方案,即和计算机中的具体实现没有关系。并且UCS-2比较流行,即2个字节长度。UCS-4不流行)
Unicode编码字符集只是统一定义了所有字符和它对应Unicode编码值,而我们的程序中怎么去存储和读取这个Unicode编码值呢?显然,你可以直接统一规定所有Unicode编码值用四个字节来存储。但是这样的话,对于Unicode编码字符集中的与ASCII码表对应的那部分字符(只需要一个字节来表示的Unicode编码值)就有点浪费了。这样,就有了各种的编码方式UTF-32/ UTF-16/ UTF-8。(注意Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案。)
Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分。 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来。

在Windows Xp/2000中,记事本->另存为时,可以选择ANSI,UNICODE,UTF-8, UNICODE big endian的编码方式。这里的UNICODE应该为UCS-2直接的编码方式,就是字符在UNICODE中的数字编号为多少,则用该数字直接编码。ANSI有自己专有的编码方式,UTF-8是Unicode字符集的编码方式。

参考资料:

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

http://baike.baidu.com/view/40801.htm

http://www.douban.com/note/166375972/

http://blog.csdn.net/nodeathphoenix/article/details/7057760

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符集与编码 的相关文章

  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 将文件夹中的所有文件及其所有子文件夹移动到一个大文件夹中 - windows xp

    我有一个文件夹 c downloads ffme 里面有很多子文件夹 每个子文件夹中都有不同数量的文件 我想将所有这些单独的文件合并到一个大文件夹中 同时将它们从子文件夹中删除 我希望最终得到一个包含大量文件的文件夹 但没有子文件夹 我怎样
  • 串行 I/O 与 Windows/Windows CE 重叠/不重叠

    抱歉 这不是一个大问题 但更多的是帮助那些在这些特定问题上遇到问题的人 我正在解决的问题需要使用串行 I O 但主要在 Windows CE 6 0 下运行 然而 最近有人问我该应用程序是否也可以在 Windows 下运行 所以我开始着手解
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 导致崩溃转储的 Java 错误的解决方法

    我开发的一个程序偶尔会由于这个错误而导致 JVM 崩溃 http bugs java com bugdatabase view bug do bug id 8029516 http bugs java com bugdatabase vie
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • Visual C++ 找不到“Windows 类型”,如 PVOID、DWORD、ULONG 等

    Windows 似乎无法找到任何这些类型 我完全不知道该怎么办 我在 MSDN 上找到的东西似乎表明它们是默认包含的 但它们在 Native 程序或 CLR 程序中不起作用 我收到的具体错误是
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • Windows 上的 boot2docker 缺少 apt-get / 包管理器

    我在 boot2docker 中 我不确定我完全理解它 但它似乎是我正在进行的项目所需要的 我已经通过 ssh 登录了 并且尝试对我们的项目进行 make 但是我得到了 make not found 然后我尝试了一个 apt get ins
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • sqlite3-ruby gem:无法构建 gem 本机扩展

    Update 看看这个后续问题 Windows 上的 Gem 更新 它坏了吗 https stackoverflow com questions 134581 gem update on windows is it broken 在 Win

随机推荐

  • R语言 判别分析:线性判别、K最邻近、有权重的K最邻近、朴素贝叶斯

    关注微信公共号 小程在线 关注CSDN博客 程志伟的博客 class包 提供Knn 函数 kknn包 提供kknn 函数及miete数据集 房租信息 kknn函数 实现有权重的K最近邻 knn函数 实现K最近邻算法 klaR包 提供Navi
  • Spring Boot 实现Mybatis多数据源

    文章目录 Spring Boot 多数据源 1 背景 2 定义数据源 2 1 定义动态数据源 2 3 定义自定义数据源 3 配置数据库链接 4 编写数据源切面 Spring Boot 多数据源 1 背景 项目日产生的数据量比较大 所以规定每
  • 基于FPGA的FFT算法实现

    基于FPGA的FFT算法实现 项目简述 FFT IP的定制及详解 Block Design设计 仿真结果 总结 项目简述 前面的一篇博客我们已经讲解了FFT算法的发展历程 至于FFT的原理感兴趣的同学可以查阅书本数字信号处理 书本上面的知识
  • 1.6 CPU性能公式

    CPU时间 一个程序在CPU上运行的时间 不包括 I O 时间 时钟周期 系统的时间周期越短 相应的CPU性能就越好 程序的时钟周期数 CPU时间 执行程序所需的时钟周期数 X 时钟周期时间 时钟周期时间是时钟频率的倒数 指令周期数 CPI
  • Cross-Domain Adaptive Teacher for Object Detection安装环境以及运行代码

    1 首先在官网上下载代码以及数据集 代码下载如下 git clone URL网址 git clone https github com facebookresearch adaptive teacher git 2 安装环境 这是作者给的r
  • [蓝桥杯]乘积尾零

    核心思路 想要出现0 即2 5 4 5 8 5 4 8又可以分解为2 末尾本来就有0的也可以分解为5 所以我们只需要把这100个数都尽量拆分为因子 2 5 相乘的形式 并统计2 5的个数 然后看一共有多少对 2 5 即可 ok 上ACcod
  • pytorch实现LSTM(附code)

    目录 一 数据集介绍 二 数据预处理 三 python代码实现 参考 最近搞了一个NASA PCoE的IGBT加速老化数据 想基于pytorch框架写一个LSTM模型进行IGBT退化状态的预测 于是有了这篇文章 注 LSTM的原理就不多讲了
  • 我为什么放弃了 LangChain?

    如果你关注了过去几个月中人工智能的爆炸式发展 那你大概率听说过 LangChain 简单来说 LangChain 是一个 Python 和 JavaScript 库 由 Harrison Chase 开发 用于连接 OpenAI 的 GPT
  • 使用scrollIntoView和监听滚动区域子div的相对于视口的顶部的距离,来实现导航定位功能

    一 需求分解 1 滚动左侧内容 关联激活右侧导航节点 2 单击右侧导航节点 右侧相应的段落滚动到可视区顶部 二 关键技术点提前知 技术点1 Element scrollIntoView scrollIntoView 方法会滚动元素的父容器
  • 安装android时遇到的困难

    1 The type org openqa selenium remote http HttpClient Factory cannot be resolv 的解决方法就是更换2 53 0的selenium的jar包 2 在dos中输入an
  • mysql数据库sequence序列表使用记录

    一 需求背景 如何确保一个序列号是按自己定义的规则依次递增 实际项目需求如下 在商户表有商户费率模板号这个字段 我们要求该字段的规则是 ST 当前日期YYYYMMDD 6位序列号 左边不够是用0填补 如 TS20200610000001和T
  • sql中视图视图的作用

    视图是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动态生成 对其中所引用的基础表来说 视图的作
  • 解决OracleOraDb10g_home1TNSListener配置问题

    解决方式一 从客户端连接到服务器 出现了这个错误 ora12541 TNS 没有监听器 于是 在服务器中启动OracleOraHome92TNSListener服务 显示 在本地计算机无法启动OracleOraHome92TNSListen
  • Windows环境下Robot Framework 安装包下载及安装流程

    RobotFramework 32位 安装 一 准备安装包 1 python 2 7 13 msi下载 2 robotframework 3 0 2 tar gz下载 3 robotframework ride 1 3 win32 exe下
  • PicGo + 阿里云图床上传失败解析

    在图片上传失败的时候 直接去看PicGo的配置文件 上传失败就是你配置哪里有问题 因为服务器不可能出问题 你typora的软件也不可能出问题 出问题的就只有PickGo这个中间配置软件了 其实就是一个json 配置文件 里面有需要的各种账户
  • 安装Scala

    前言 本文主要讲解如何在Windows10中安装Scala 并在IDEA中配置Scala的开发环境 Scala作为大数据开发中的常用编程语言 特别是Spark更是直接用Scala开发而来 因此使用Scala进行大数据开发十分必要 下载安装包
  • dos命令弹出对话框---Msg命令详解

    dos命令弹出对话框 Msg命令详解 cmd下执行 在当前用户的桌面弹出一个对话框 显示哈哈二字 并且十秒后自动关闭 usename 是系统环境变量 表当前用户名 msg username time 10 哈哈 表示向局域网中的192 16
  • vscode配置eigen3

    目录 1 头文件包含 2 c cpp properties json 3 CMakeList txt 4 完整代码 1 头文件包含 Eigen 核心部分 include
  • redis info 详解(InsCode AI 创作助手)

    redis info 详解 选项说明 Redis的INFO命令返回了关于Redis服务器的各种信息和统计数据 这些信息可以帮助您监控和管理Redis实例 INFO命令的输出是一个包含多行文本的字符串 包括了各种不同的信息类别 以下是一些常见
  • 字符集与编码

    字符集就是客观世界上存在的各种语言符号 如英语26个字符 汉字 拉丁字符等 编码就是将字符集用二级制表示出来的一种规范 常用字符集有ASCII字符集 GB2312字符集 BIG5字符集 GB18030字符集 Unicode字符集等 ASCI