`
madbluesky
  • 浏览: 83758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符编码学习笔记

    博客分类:
  • java
阅读更多

unicode: 也叫万国码,是计算机领域的一种业界标准,它是基于通用字符集的.Unicode的功用是为每一个字符提供一个唯一的代码(即一组数字),而不是一种字形,而将视觉上的演绎工作(例如字体大小、外观形状、字体形态、文体等)留给其他软件来处理,例如网页浏览器或是文字处理器。

            目前实际应用的Unicode版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示216即65536个字符。基本满足各种语言的使用。实际上目前版本的Unicode尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。

    最新(但未实际广泛使用)的Unicode版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与UCS-4保持一致。未来版本会扩充到ISO 10646-1实现级别3,即涵盖UCS-4的所有字符。UCS-4是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示231个字符,完全可以涵盖一切语言所用的符号。

    Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为UTF)

    UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大大节省了编码长度(具体方案参见UTF-8)。类似的,对未来会出现的需要4个字节的辅助平面字符和其他UCS-4扩充字符,2字节编码的UTF-16也需要通过一定的算法进行转换。

    直接使用与Unicode编码一致(仅限于BMP字符)的UTF-16编码,由于每个字符占用了两个字节,在Macintosh (Mac)机和PC机上,对字节顺序的理解是不一致的。这时同一字节流可能会被解释为不同内容,如某字符为十六进制编码4E59,按两个字节拆分为4E和59,在Mac上读取时是从低字节开始,那么在Mac OS会认为此4E59编码为594E,找到的字符为“奎”,而在Windows上从高字节开始读取,则编码为U+4E59的字符为“乙”。就是说在 Windows下以UTF-16编码保存一个字符“乙”,在Mac OS里打开会显示成“奎”。此类情况说明UTF-16的编码顺序若不加以人为定义就可能发生混淆,于是在UTF-16编码实现方式中使用了大端序(Big-Endian, 简写为UTF-16 BE)、小端序(Little-Endian,简写为UTF-16 LE)的概念,以及可附加的字节顺序记号解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16)

    XML及其子集XHTML采用UTF-8作为标准字集,理论上我们可以在各种支持XML标准的浏览器上显示任何地区文字的网页,只要电脑本身安装有合适的字体即可。可以利用&#nnn;的格式显示特定的字符。nnn代表该字符的十进制Unicode代码。如果采用十六进制代码,在编码之前加上x字符即可。但部分旧版本的浏览器可能无法识别十六进制代码。

总结:unicode,ISO 10646通用字符集都只是一种编码标准,即为世界上可能出现的字符设置一个唯一的编码值,具体字符该怎么显示并没有定义,如何显示一个unicode(iso 10646)字符是由显示字体决定的。

gb2312 : 由2个字节组成,并且2个字节的值得都得大于127
gbk : 由2个字节组成,只要第一个字节大于127,则该字节与其后的一个字节组合起来表示一个中文字符
GB18030 : 表示与gbk一样只是字符集更大,增加了几千个少数民族文字
在gbk或gb判断一个字符是否是汉字的方法是判断一个字节的值是否大于127,如果大于则该字节与其后的一个字节合起来表示一个中文

utf-8是一种unicode的一种实现,在utf-8判断是否是汉字需要查询unicode编码表一种不全的范围是U+4E00~U+9FA5

html中我们可以用&#10进制数字或&#x16进制数字 表示一个unicode字符
java中可以用\u四个十六进制数表示一个unicode字符
js 中也是用\u四个十六进制数表示一个unicode字符

分享到:
评论

相关推荐

    JAVA 字符串应用笔记

    以上内容是基于"JAVA 字符串应用笔记"可能涵盖的基本知识点,对于初学者来说,理解和掌握这些概念是进阶学习Java和Android开发的基础。在实际开发中,还会涉及到更多高级特性和实践技巧,如字符串格式化、正则表达式...

    ASN[1].1编码学习笔记

    例如,"MyName ::= IA5String (Tom)"表示MyName是字符串"Tom"的IA5String编码。同时,"MyName ::= IA5String(Tom|Joe)"表明MyName可以是"Tom"或"Joe",提供了解码器的扩展可能性。 ASN.1还提供了容器(container)...

    当年我学PHP时整理的学习笔记

    【标题】:“当年我学PHP时整理的学习笔记” 这篇学习笔记是作者在学习PHP编程语言的过程中逐步积累并整理的,涵盖了初学者从基础到进阶的一些关键知识点。PHP是一种广泛应用于网页开发的服务器端脚本语言,尤其在...

    python学习笔记.pdf

    在这份《python学习笔记.pdf》中,记录了Python编程的基础知识和一些技巧,内容涵盖了字符串处理、变量操作、数据结构、循环、条件判断等方面。以下是对学习笔记中提到知识点的详细说明。 ### 字符串处理 在Python...

    超详细的web前端基础学习笔记

    - **`<meta>` 标签**:例如,设置浏览器的字符编码方式。 ##### HTML 中的常见标签 - **文本标签** - **标题标签** (`<h1>` 至 `<h6>`): 用于定义不同级别的标题。 - **段落标签** (`<p>`): 用于定义文本段落。 ...

    python学习笔记ing

    ### Python学习笔记知识点详解 #### 数据类型与变量 在Python编程中,理解基本的数据类型及其操作至关重要。数据类型包括但不限于整型(`int`)、浮点型(`float`)、布尔型(`bool`)以及字符串(`str`)。变量则...

    (初级)机器学习笔记一:python基础语法之数据类型和字符串

    本次笔记是关于Python语言基础知识中的数据类型和字符串操作,这是学习机器学习和数据科学的入门要点。 首先,Python的基本数据类型包括整型(int)、浮点型(float)、布尔型(bool)以及复数类型(complex),...

    C#字符串和正则表达式学习笔记

    在"C#字符串和正则表达式学习笔记.doc"这份文档中,你可能还会学到如何使用正则表达式进行高级匹配,例如使用捕获组和非捕获组,以及使用反向引用来引用先前匹配的子串。同时,可能会涉及到正则表达式的性能优化技巧...

    PHP学习笔记之字符串编码的转换和判断

    但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库: 复制代码 代码如下:mb_detect_encoding(‘软件开发网’); 可是 mb_detect_encoding 存在一个...

    python基础学习笔记

    在字符串处理方面,讲解了转义字符、原始字符串、索引、切片、编码转换、字符串构造函数等。 列表(list)是Python中非常灵活和常用的数据结构。笔记中详细说明了如何创建列表,列表的构造函数,列表的运算,以及...

    安卓学习笔记大全

    【安卓学习笔记详解】 在安卓开发的学习过程中,了解并掌握基本概念和技术是非常关键的。以下是一些核心知识点的详述: 1. **字符集与编码**:Android系统默认使用UTF-8编码,而不是iso-8859-1。当你使用`getBytes...

    《网络规划设计师》学习笔记

    ### 《网络规划设计师》学习笔记关键知识点梳理 #### 第1章 计算机网络原理 ##### 1.1 计算机网络概论 - **定义与应用**: - 定义:计算机网络是一种将地理位置不同且具有独立功能的计算机系统通过通信设备和...

    vb6.0 学习笔记

    VB6.0学习笔记 VB6.0是一种功能强大且广泛应用的编程语言,以下是VB6.0学习笔记的重要知识点总结: 编码规则 在VB6.0中,代码不区分大小写,这意味着开发者可以随意使用大写或小写字母编写代码。另外,当一条语句...

    JAVA学习笔记JAVA学习笔记.doc

    通常,Java学习笔记可能涵盖类、对象、封装、继承、多态性、控制流、数据类型、异常处理、集合框架、IO流、线程、网络编程等主题。如果能提供清晰的文本内容,我将非常乐意为您详细解释相关的Java编程概念。

    JS学习笔记(BOM,DOM,字符串方法等)

    常见的字符串方法包括`length`属性(返回字符串长度),`charAt()`(根据索引获取字符),`charCodeAt()`(获取字符的Unicode编码),以及`fromCharCode()`(根据Unicode编码创建字符)。 以上是JavaScript中的一些...

    《网络规划设计师》学习笔记118页.doc

    同步方式包括位同步、字符同步、帧同步等。检错与纠错方法包括二维奇偶校验、循环冗余校验等检错方法。检错重发方法有:停发等候重发、返回重发和选择重发。 数据调制与编码包括数字数据的编码与调制、模拟数据的...

Global site tag (gtag.js) - Google Analytics