`

Unicode and UTF8

阅读更多

What is Unicode?

Unicode provides a unique number for every character,
no matter what the platform,
no matter what the program,
no matter what the language.

Fundamentally, computers just deal with numbers. They store letters and other characters by assigning a number for each one. Before Unicode was invented, there were hundreds of different encoding systems for assigning these numbers. No single encoding could contain enough characters: for example, the European Union alone requires several different encodings to cover all its languages. Even for a single language like English no single encoding was adequate for all the letters, punctuation, and technical symbols in common use.

These encoding systems also conflict with one another. That is, two encodings can use the same number for two different characters, or use different numbers for the same character. Any given computer (especially servers) needs to support many different encodings; yet whenever data is passed between different encodings or platforms, that data always runs the risk of corruption.

Unicode is changing all that!

Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.

Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.

 

UTF8

它其实和Unicode是同类,就是在编码方式上不同!
首先UTF8编码后的大小是不一定,不像Unicode编码后的大小是一样的!

我们先来看Unicode的编码:一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节!

而UTF8编码:一个英文字母“a” 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!

现在就让我们来看看UTF8编码的原理吧:
  因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位的!

  当要表示的内容是 7位 的时候就用一个字节:0*******   第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。

  当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10******   第一个字节的110和第二个字节的10为标志位。

  当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10******    和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。

  以此类推:
        四个字节:11110**** 10****** 10****** 10******
  五个字节:111110*** 10****** 10****** 10****** 10****** 
  六个字节:1111110** 10****** 10****** 10****** 10****** 10****** 
  .............................................
       ..............................................

明白了没有?
编码的方法是从低位到高位

现在就让我们来看看实例吧!

 黄色为标志位
其它着色为了显示其,编码后的位置

Unicode十六进制

Unicode二进制

UTF8二进制

UTF8十六进制

UTF8字节数

B

00001011

00001010

B

1

9D

00010011101

11000010 10011101

C2 9D

2

A89E

10101000 10011110

11101010 10100010 10011110

EA A2 9E

3

分享到:
评论

相关推荐

    unicode/utf8 and unicode/utf16(c代码)

    Unicode是一个国际标准,旨在统一全球各种语言的字符表示,而UTF-8和UTF-16则是Unicode的两种主要编码方式。本篇将深入探讨这两个编码格式以及如何在C语言中进行它们与Unicode之间的转换。 **Unicode** Unicode是...

    MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

    这里我们将深入探讨UTF8和UTF8MB4两种编码格式,以及它们各自的排序规则`utf8mb4_unicode_ci`和`utf8mb4_general_ci`。 首先,UTF-8是一种广泛使用的Unicode字符编码方案,它允许使用1到4个字节来表示不同的字符。...

    vb utf8转Unicode

    ### vb utf8转Unicode知识点详解 #### 一、引言 在编程中,字符串编码转换是常见的需求之一,尤其是在处理多种语言文字时。Visual Basic(简称VB)作为一款广泛使用的编程语言,在处理文本数据时也需要面对不同的...

    XE5 And Upper AES Ansi Unicode UTF8

    标题“XE5 And Upper AES Ansi Unicode UTF8”指的是在Embarcadero XE5开发环境中,结合AES(Advanced Encryption Standard)加密算法,处理Ansi、Unicode以及UTF8编码的场景。这种技术通常用于确保在手机平台上数据...

    Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结

    用了这么长时间,发现...那么在utf8_bin中你就找不到 txt = ‘A’ 的那一行, 而 utf8_general_ci 则可以. utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。 utf8_general_cs 区分大小写,如果

    delphi Read and Write Unicode

    UTF8Content := TEncoding.UTF8.GetString(FileStream.Bytes); finally FileStream.Free; end; end; ``` 5. 写入UTF-8文件: 写入UTF-8文件时,同样需要使用`TEncoding.UTF8`进行编码,然后将数据写入文件。以下...

    VB6.0 UTF-8转换GB2312函数

    gb2312Bytes(j) = (utf8Bytes(i + 2) And &HF0) / 16 + (utf8Bytes(i + 2) And &HF) j = j + 1 Else ' 处理三字节字符 ' (这里仅处理双字节GB2312,忽略其他字符) Exit Function End If Else ' 单字节...

    ASP版hmac和md5加密函数,支持中文,带unicode和utf8转码

    原因还是ASP转换unicode十分困难,但是支付宝的接口是有这么个函数的,而且代码很简练,我参考它设计了UTF-8编码函数。(支持多国语言的哦) 经过三天的改进,程序从17K精简到了9K,使hmac兼容中文,md5也提供了两...

    中文转UTF-8编码

    Public Function UTF8Encode(ByRef str As String) As String Dim b Dim ub Dim High8b, Low8b Dim UtfB1, UtfB2, UtfB3 Dim i, s For i = 1 To Len(str) b = Mid(str, i, 1) ub = AscW(b) If ub If (ub ...

    utf - 8和unicode字符「utf-8 and unicode characters」-crx插件

    ☞utf8字符是一个扩展,其中包含很酷的字符列表☆✪✰复制并粘贴到使用utf的网站上的消息❀中,例如twitter或wordpress:smiling_face:✓➩I:red_heart::hot_beverage::umbrella_with_rain_drops::smiling_face:☻中...

    vb读写Unicode文件的完美实例

    Unicode文件通常有两种主要格式:UTF-8和UTF-16。UTF-16是本实例中讨论的重点,它以两个字节表示一个字符,对于英文字符,这与ASCII编码相同,但对于其他语言,如中文、日文等,每个字符将占用两个字节。 读取...

    freeradius 默认生成表转utf8

    Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 所以,自己把还没产生数据的表都删除,重新建立ut8表 此文件sql语句都是没产生数据的表,直接可以用py或者...

    Source Insight 3支持Utf-8

    UTF-8是一种广泛使用的Unicode字符编码方案,它可以表示Unicode字符集中的所有字符,覆盖了全球大部分语言的文字。在编程环境中,UTF-8编码因其可读性强、跨平台兼容性好等特点,已经成为许多项目的标准编码方式。 ...

    Perl_and_unicode_and_encode-源码.rar

    在这个"Perl_and_unicode_and_encode-源码.rar"压缩包中,我们可以期待找到关于Perl如何处理Unicode字符和编码转换的相关源码示例。Unicode是现代软件和互联网中用于表示世界上几乎所有文字的标准,而Perl中的编码...

    Unicode [EN]

    Unicode可以被不同的字符编码所实现,最常见的编码包括UTF-8、UTF-16和现已过时的UCS-2。 ### Unicode的编码方式 - **UTF-8**:对于任何ASCII字符,UTF-8使用一个字节进行编码,这些字符在UTF-8和ASCII编码中的...

    Read and Display Unicode Files

    1. **文件编码识别**:在读取Unicode文件之前,你需要知道文件的编码类型,因为Unicode有多种实现方式,如UTF-8、UTF-16、UTF-32等。LabVIEW中的“文本文件读取VI”默认可能不支持Unicode,所以可能需要自定义函数或...

    设置myeclipse新建jsp文件默认编码为UTF-8

    - 将**Encoding**选项改为“ISO10646/Unicode (UTF-8)”或"Chinese, National standard"。 - 点击**Apply**按钮应用设置。 这个步骤确保了在创建新的文件时,默认采用UTF-8编码,从而避免了中文乱码的问题。 #####...

    谈谈Unicode编码,

    UTF(Unicode Transformation Format)是Unicode编码的几种实现方式,其中最常见的是UTF-8、UTF-16和UTF-32。UTF-8是最广泛使用的编码格式,它使用1到4个字节表示一个字符,对ASCII字符使用单字节编码,对其他字符...

    Spring Data Jpa Mysql使用utf8mb4编码的示例代码

    utf8mb4 是一种 Unicode 编码方式,可以表示更多的 Unicode 字符,而 utf8 只能表示基本多语言 plane 中的 Unicode 字符。utf8mb4 是 MySQL 中的一种字符集,它可以存储更多的 Unicode 字符。 知识点 2: 数据库字符...

    处理UTF-8格式字符串的便携PHP库.zip

    }UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一...

Global site tag (gtag.js) - Google Analytics