分析Unicode和UTF-8

掌握HTML中Unicode到UTF-8的转换方法 Unicode字符集的定义与重要性Unicode字符集是一种为世界上每一个字符提供唯一编号的标准编码方式,覆盖了几乎所有的书写系统和文字。Unicode不仅为IT专业人士提供了便利,而且确保了不同平台、不同语言之间的数据交换和显示可以无缝进行,这是在国际化和本地化应用中不可或缺的。此外,Unicode对于保持信息完整性,避免数据在不同系统间传输时出现乱码现象,具有至关重要的作用。Unicode编码的历史发展Unicode的发展始于1988年,其目的是为了替代和统一现有的多种字符编码标准。 阅读详情

 1、在中国,大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。
最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号
95年重新修订了编码,命名GBK1.0,共收录了21886个符号。
之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。

按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。
  2、台湾,香港等地使用的是BIG5编码
  3、日本:SJIS编码
  如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。
  在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。
  那么Unicode是如何编码的呢?其实非常简单。
  就是将世界上所有的文字用2个字节统一进行编码。可能你会问,2个字节最多能够表示65536个编码,够用吗?
  韩国和日本的大部分汉字都是从中国传播过去的,字型是完全一样的。
  比如:“文”字,GBK和SJIS中都是同一个汉字,只是编码不同而已。
  那样,像这样统一编码,2个字节就已经足够容纳世界上所有的语言的大部分文字了。
  Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。
  现在用的是UCS-2,即2个字节编码,而UCS-4是为了防止将来2个字节不够用才开发的。UCS-2也称为基本多文种平面。
  UCS-2转换到UCS-4只是简单的在前面加2个字节0。
  UCS-4则主要用于保存辅助平面,例如Unicode 4.0中的第二辅助平面
  20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF -   26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF
  总共增加了16个辅助平面,由原先的65536个编码扩展至将近100万编码。
  那么既然统一了编码,如何兼容原先各国的文字编码呢?
  这个时候就需要codepage了。
  什么是codepage?codepage就是各国的文字编码和Unicode之间的映射表。
  比如简体中文和Unicode的映射表就是CP936,点这里查看官方的映射表。
  以下是几个常用的codepage,相应的修改上面的地址的数字即可。
codepage=936 简体中文GBK
codepage=950 繁体中文BIG5
codepage=437 美国/加拿大英语
codepage=932 日文
codepage=949 韩文
codepage=866 俄文
codepage=65001 unicode UFT-8
最后一个65001,据个人理解,应该只是一个虚拟的映射表,实际只是一个算法而已。
从936中随意取一行,例如:
0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
前面的编码是GBK的编码,后面的是Unicode。
通过查这张表,就能简单的实现GBK和Unicode之间的转换。
 
  现在明白了Unicode,那么UTF-8又是什么呢?又为什么会出现UTF-8呢?
  ASCII转换成UCS-2,只是在编码前插入一个0x0。用这些编码,会包括一些控制符,比如 或 /,这在UNIX和一些C函数中,将会产生严重错误。因此可以肯定,UCS-2不适合作为Unicode的外部编码。
  因此,才诞生了UTF-8。那么UTF-8是如何编码的?又是如何解决UCS-2的问题呢?
例:
E4 BD A0        11100100 10111101 10100000
这是“你”字的UTF-8编码
4F 60          01001111 01100000
这是“你”的Unicode编码
按照UTF-8的编码规则,分解如下:xxxx0100 xx111101 xx100000
把除了x之外的数字拼接在一起,就变成“你”的Unicode编码了。
注意UTF-8的最前面3个1,表示整个UTF-8串是由3个字节构成的。
经过UTF-8编码之后,再也不会出现敏感字符了,因为最高位始终为1。
以下是Unicode和UTF-8之间的转换关系表:
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Unicode编码转换到UTF-8,简单的把Unicode字节流套到x中就变成UTF-8了。

 

 UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

  ╔════════════╦══════════════╗
  ║UCS-2编码(16进制)       ║UTF-8 字节流(二进制)        ║
  ║------------------------║----------------------------║
  ║0000 - 007F             ║0xxxxxxx                    ║
  ║0080 - 07FF             ║110xxxxx 10xxxxxx           ║
  ║0800 - FFFF             ║1110xxxx 10xxxxxx 10xxxxxx  ║
  ╚════════════╩══════════════╝
日文字库Sjis码表 日文字库Sjis码表 sjis--gbk 立即下载

相关推荐

日语SJIS和Unicode的转换

最近做一个项目有关于SJIS和Unicode的转换要求,把调查后整理到的source共享一下

文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Cp943C 、EUC-JP 、EBCDIC 等等之间的区别与联系

■前言 暂且不谈 UTF-8,Unicode (UTF-8只是Unicode的一种实现方式) https://blog.youkuaiyun.com/sxzlc/article/details/106084402 ← win10下,以十六进制形式查看文件 关于文件编码的描述,有很多种描述方式 中文:ANSI,GBK,GB2312, MS936 日文:ANSI, MS932,SJIS(SHIFT JIS),Windows-31J,EUC-JP,ISO-2022-JP 英文:ANSI, ASCII,MS437.

sun0322 2万+

Palantir的本体论建模跟数仓建模的异同

Palantir的Foundry Ontology通过构建组织的数字孪生体,将数据集和模型映射为对象类型、属性、链接和操作类型,形成完整的语义知识网络。与传统数仓建模相比,本体建模以业务问题为驱动,强调细粒度语义和实时决策能力,采用图语义技术实现灵活的映射关系。

轩哥的个人研究和成长记录 1594

编码格式变换(UTF-8→SJIS)

UTF8表示 文字コード JIS表示 文字コード − \u2212 - \uFF0D 〜 \u301C ~ \uFF5E ¢ \u00A2 ¢ \uFFE0 £ \u00A3 £ \uFFE1 ¬ \u00AC ¬ \uFFE2 — \u2014 ― \u2015 ‖ \u2016 ∥ \u2225

m0_61739605的博客 1536

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

5分钟搞定Vivado IP核的VCS仿真:从Export脚本到Verdi波形查看全流程

本文详细介绍了如何利用Vivado的Export Simulation功能,快速搭建Vivado IP核的VCS与Verdi联合仿真环境。通过自动化脚本生成、FSDB波形配置及高效调试技巧,实现从工程导出到波形查看的全流程,大幅提升FPGA验证效率,尤其适合IC验证工程师和竞赛团队。

weixin_29306261的博客 481

jsp乱码解析

先理解一下java里的编码 假设有两个字符String str = “OX”在jvm中的byte表现为 AB  CD    13  57(这里是假设)。那么执行str.getBytes("")后会变成什么样呢 字符编码                                          O                      X UTF-16(JVM)

lwkhehe的专栏 1151

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

什么是Unicode是什么是UTF-8

首先说明一下现在常用的一些编码方案:  1、在中国,大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号95年重新修订了编码,命名GBK1.0,共收录了21886个符号。之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,

shg104的专栏 1303

Python教程:一文了解Python的深拷贝与浅拷贝

理解 Python 中的深拷贝(deep copy)和浅拷贝(shallow copy)是非常重要的,特别是在处理嵌套结构的数据时。让我们深入探讨这两个概念,并通过代码示例进行说明。

旦莫的博客 3967

构建个体结构脑网络的另一种方法

这篇文献提出了一种构建个体结构脑网络的方法即Morphometric INverse Divergence (MIND),通过T1像数据即可对每个被试构建一个脑网络,且通过多个特征进行构建而非单一的特征。即可获得由4个特征得到的个体结构网络矩阵,可以根据自己的需求采用不同的特征组合得到网络矩阵,也可以结合T1/T2像得到髓鞘化相关的网络矩阵,后续可修改代码批量处理自己的数据。这是文献贴出来的代码。在终端直接克隆到本地。2.修改路径运行代码。

weixin_52073820的博客 822

ASCII,Unicode和UTF-8的简明分析

在编程中,我们遇到编码的问题,作为一个程序员,是必须要懂一些编码的知识.找了一篇简明清晰的文章.分享给大家.    by明智 --------------------------------我是一条分割线---------------------------------- 字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 1. ASCII码 我们知道,在计算机

嵌入式驱动_凌阳教育 1120

【YOLO11改进 - 注意力机制】SCSA通过结合空间注意力和通道注意力,提高各种下游视觉任务的性能。

【YOLO11改进 - 注意力机制】SCSA通过结合空间注意力和通道注意力,提高各种下游视觉任务的性能。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 474

ASCII,Unicode,UTF-8三者区别和关系分析

ASCII,Unicode和UTF-8均为计算机系统中对字符的编码方式,现在对三者的区别和关系进行分析: ASCII: ASCII 码由美国制定,使用指定的 7 位或 8 位二进制数(单字节)组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。 例如:在ASCII码当中,01000001这个8位二进制数(也就是十进制65)表示字符‘A’,所以当我们输

m0_52364932的博客 2793

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

unicode 与 utf-8的转换关系

unicode 与 utf-8 转换关系

weixin_39195813的博客 631

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Unicode字符集、UTF-8、UTF-16、UTF-32

1.Unicode字符集 Unicode(统一码、万国码、单一码)包括字符集、编码方案(UTF-8、UTF-16、UTF-32),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。(末尾附unicode编码范围表) 2.UTF-8编码 变长编码,其特点如下: 兼容 ASCII 没有字节序问题 以英文和西文符号比较多的场景下(例如 HTML/XM...

weixin_42881755的博客 1031

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度解析ascii码,Unicode,UTF-8

字符编码笔记:ASCII,Unicode和UTF-8 以下两篇文章转自Internet,说下收获:字符在计算机中一定是要经过编码(encode)变成01二进制码才能存储在文件系统上,经过解码(decode)还原成字符对象放进内存中进行各种操作。 所以对python源码来说,文件的编码形式就决定了代码本身(代码本身就是字符的组合)以什么样的方式存储在文件系统中,python文件开头声明的_...

qq_16971433的博客 426

Unicode和UTF-8(UTF-16)

文章目录为啥需要UnicodeUnicode详细介绍用UTF-16表示"汉"用UTF-8表示"汉"Unicode版本2那么到底该如何选择呢?稍微再展开那么一点点…… 为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样.其他啥文字图片之类...

one-way or another 199

深入理解 MySQL 中的 UTF-8 与 UTF-8MB4 字符集

UTF-8 是一种变长的字符编码,它是 Unicode 的一种实现方式。在 UTF-8 编码中,每个字符可以使用 1 到 4 字节来表示。UTF-8 编码的最大特点是向后兼容 ASCII,即所有标准的 ASCII 字符(U+0000 到 U+007F)仍然使用 1 字节表示。UTF-8 能够表示几乎所有的语言字符,并且它已经成为 Web 上最广泛使用的字符编码标准。1 字节:ASCII 字符(0x00 到 0x7F)2 字节:较常见的字符,如拉丁字母、汉字等(0x80 到 0x7FF)3 字节。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

探索Unicode字符集(UTF-8\UTF-16\UTF-32)

ASCII字符仅占1个字节(8位),UTF-8占1-4个字节(二进制至少8位-max32位),他们两个有交集。但是UTF-16占2-4个字节(二进制至少16位-max32位),比如表示A要填充0,所以与ASCII会有差距。Unicode编码包括了UTF-8、 UTF-16、 UTF-32,只有UTF-8编码是兼容ASCII的,那我如何知道U+0041转为十进制后应该匹配哪个字符?UTF-16占2-4个字节(二进制至少16位-max32位)UTF-8占1-4个字节(二进制至少8位-max32位)

qq_53846579的博客 822

ANSI UNICODE GB2312 UTF-8

  ANSI, UNICODE,都是字符集,是字符编码(ID) GB2312是ANSI的扩展,可以看成也是ANSI,只不过占据了2个字节。 UTF-8是编码规则,是对字符集的二次实现,理论上不仅可以编码ANSI,也可以编码UNICODE,只不过一般只有对UNICODE的编码。 在屏幕中显示一个字符要经过这样的过程 一:ANSI,UNICODE    -> 字模  -> ......

ruoge2007的专栏 291

Unicode vs. UTF-8 etc.

目测是个老问题了。随便一搜,网上各种总结过。这里不辞啰嗦,尽量简洁的备忘一下。 几个链接,有道云笔记链接,都是知乎上几个问题的摘录;阮一峰的日志,1-5 还是值得参考,但是之后的部分则混淆了 Windows Unicode 和更广泛意义上的 Unicode 的区别,前者最早是将 UCS-2 标准的编码称作 Unicode,win2k 之后则替换成了 UTF-16LE with BOM,但依然称作...

weixin_30817749的博客 82

利用UNICODE缺陷攻陷IDS

技术核心:UTF-8因为编码方式的缺陷导致同一代码的多重含义,从而可能导致IDS和OS对于代码的误认,产生相应漏洞,为入侵者打开大门.最近关于使用UNICODE中的问题攻陷IDS的争论开始见诸于世,有Stuart McClure和Joel Scambray这样的好同志甚至宣称UNICODE的缺陷可以导致IDS的全面失效。本文试图阐述何为UNICODE,利用UNICODE攻陷IDS的机理何在以及相应

...... 1531
上一篇: oracle 并行专题
下一篇: iconv库的使用
inter999
博客等级 码龄19年 18粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值