分析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万+

电源完整性之Cadence Sigrity Power DC_电热协同仿真

之前和大家分享过电源完整性之仿真设计原理链接: link.今天接着上一篇文章总结一下电源直流压降的的仿真操作流程及一些simulation中的设置参数,用到的是Cadence Sigrity 中的Power DC组件,来操作一下电热协同仿真,下面开始享受仿真的快乐吧: 第0步:仿真简介 电热协同仿真把电和热相互的影响考虑到了一起。因为电导率并不是固定不变的,而是和温度有关,随着温度的升高导电率会下降。同样电流流径电阻的时候会产生热量,此热量为焦耳热。因此为了获得准确的仿真信息,应考虑电与热的互相影响,进行电

刘小同学的博客 1万+

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

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

m0_61739605的博客 1536

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

解决ArcGIS-OpenStreetMap Toolbox-Load OSM File错误

在安装成功OpenStreetMap Toolbox后,首次运行Load OSM File工具,出现以下错误

Zjf的博客 8820

jsp乱码解析

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

lwkhehe的专栏 1151

大疆精灵3无人机2.4GHz通信系统实测:跳频扩频技术深度解析

跳频扩频(FHSS)是一种经典的扩频通信技术,其核心原理是通过让载波频率在一个宽频带上按伪随机序列快速跳变,将窄带信号的能量扩散开来。这种技术能有效对抗固定频率干扰,提升通信的可靠性和抗截获性,在无线遥控、军事通信等领域具有重要价值。在无人机、物联网等对实时性与可靠性要求高的应用场景中,FHSS技术能显著增强复杂电磁环境下的链路鲁棒性。本文以频谱分析仪实测大疆精灵3无人机为例,深入剖析其2.4GHz频段遥控与图传系统的工作特性,揭示了其采用的成熟FHSS方案,包括约76MHz的总跳频带宽、39个信道及约2M

weixin_33935636的博客 310

什么是Unicode是什么是UTF-8

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

shg104的专栏 1303

【雕爷学编程】Arduino动手做(45)---红外光电避障传感器模块4

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外光电避障传感器模块

雕爷学编程 2503

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字 (Java/Py/C/C++/Js/Go)

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2127

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

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

嵌入式驱动_凌阳教育 1120

亲测解决This application failed to start because no Qt platform plugin could be initialized.

这个问题是由于环境变量改变或者Qt的路径改变导致,解决办法是在环境变量里面重新添加Qt路径。

狂小虎/Anthony Dave的博客 KuangXiaoHu's Blogs 2920

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

【经验&技巧】IBIS AMI模型眼图仿真问题探讨

在ADS的仿真环境中,不论发送和接收的AMI模型是否为true或者false,都可以将通道仿真设置为统计模式,但是,如果有一方的Init函数为false,在统计模式下,处于false状态的模型将不能执行其自带的后处理功能,如下图所示,左边的统计模式和右边的逐比特模式眼图存在明显的差异,原因在于,接收端的init函数为false导致在统计模式中不能对眼图进行DFE处理,换言之,此时统计模式下的眼图就是未经任何处理的“生图”。

一只豌豆象的博客 1766

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

unicode 与 utf-8的转换关系

unicode 与 utf-8 转换关系

weixin_39195813的博客 631

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

深度解析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、付费专栏及课程。

余额充值