计算机程序设计

UTF-8 - 字符编码

Unicode的支持几乎所有现有的字符集。 编码Unicode字符集的最佳形式是UTF-8编码。 它支持ASCII的相容性,耐数据,效率和易于加工的失真。 但首要的事情。

编码形式

计算机操作不仅作为数字抽象的数学对象,以及存储单元的组合和处理固定大小的数据 - 字节和32比特的字。 编码标准确定如何呈现时,必须考虑到这一点 的字符数。

在计算机系统中,存储在8个比特(1个字节),16或32位的存储器单元中的整数。 每种形式定义了一个Unicode编码,其存储器单元的序列是对应于特定符号的整数。 在标准有三种不同的形式编码的Unicode字符8,16和32位的块。 因此,它们被称为UTF-8,UTF-16和UTF-32。 名称UTF代表Unicode转换格式。 每个的三种形式编码装置的等于表示Unicode字符具有在各种应用中的优点。

数据加密可以用于表示Unicode标准的所有字符。 因此,他们对解决方案完全兼容于多种原因,采用不同形式编码的。 每个编码可以明确被转换成任何其他两个的而不会丢失数据。

nenalozheniya原则

鉴于非部分重叠的各形式的Unicode编码的开发。 例如,Windows-932形成的的代码的一个或两个字节的字符。 序列长度取决于第一字节,所以在串联的两个字节和单字节不相交的前导字节值。 然而,一个单一的字节的值和后字节序列可重合。 这意味着,例如,该字符搜索D(代码44)可以找到它错误地进入两字节字符“D”的序列的第二部分(84码44)。 要找出哪个顺序是正确的,该计划应考虑到以前的字节。

情况复杂,如果开头和结尾的字节匹配。 这意味着,为了消除不确定性将是一个反向查找到达文本或唯一码序列的开始之前。 这不仅效率低下,而且没有保护,可能出现的错误,因为只有一个错误字节的全文已成为不可读。

因为前导,尾随的值,和一个单一的存储单元是不一样的信息格式转换的Unicode避免了这个问题。 这将确保所有的Unicode用于搜索和比较,永不放弃由于字符代码的不同部分的重合错误的结果。 这些形式的编码遵守原则nenalozheniya事实上,从其他东亚多字节编码区分开来。

nonintersection另一方面 Unicode编码 是每个字符具有清楚限定的边界。 这消除了需要扫描之前的符号的数目不定。 此功能有时被称为自计时编码。 的代码单元失真将介绍只有一个字符的失真,与周边字符仍然完好无损。 在8位格式转换,如果指针指向字节,10xxxxxx开始(在二进制代码)找到符号的开始需要一至三个反向转换。

一致性

Unicode协会完全支持所有3种形式编码。 Unicode字符编码标准的实施例的同样有效的形式 - 它不反对UTF-8和Unicode,因为所有转换格式是很重要的。

字节取向

为了表示UTF-32字符将需要一个32位的代码单元,其与Unicode代码一致。 UTF-16 - 一到两个16位单元。 的UTF-8使用多达4个字节。

UTF-8编码被设计为具有面向字节的基于ASCII的系统兼容。 大多数现有的软件和信息技术的做法很长一段时间的字节序列依赖于人物的表现。 多协议取决于坚贞ASCII编码 ,并使用或者避免了特殊的控制字符。 一个简单的方法,以适应情况的Unicode可以,使用8位编码表示Unicode字符,任何等效的ASCII字符或控制字符。 为此目的,并且它是UTF-8编码。

可变长度

UTF-8 - 编码的可变长度的,由8位的存储单元中,上位,它们表示对每个单独的字节的序列的部分属于。 分配给码序列的第一个元素值中的一个范围时,另一个 - 为下。 这提供了不相交的编码。

ASCII

UTF-8编码是完全支持ASCII码(为0x00-0x7F)。 这意味着,Unicode字符U + 0000-U + 007F被转换成单字节为0x00-0x7F UTF-8,从而成为从ASCII难以区分。 另外,为避免歧义,该值为0x00-0x7F不再使用在Unicode字符的单个字节表示。 以编码符号neideograficheskih以外ASCII,使用两个字节的序列。 符号范围U + 0800-U + FFFF由三个字节表示,并且具有比U + FFFF多个额外的代码需要四个字节。

适用范围

UTF-8编码通常被给予在HTML协议的优先级,等等。

XML已经成为第一个标准与UTF-8编码的完全支持。 标准组织还推荐它。 在从ASCII字符不同的URL地址支持问题,当联盟W3C和IETF工程小组来对所有的编码协议,就解决了 URL地址 只在UTF-8。

与ASCII兼容性有利于过渡到新的软件。 使用UTF-8的作品大多数文本编辑器,包括JEDIT,Emacs的,BBEdit中,Eclipse和 “记事本” 的Windows操作系统。 编码的Unicode的任何其他形式无法拥有这样的支持工具的。

编码优点是,它由一个字节序列的。 使用UTF-8字符串很容易在C和其他编程语言的工作。 这是编码的唯一形式,顺序不需要标签字节BOM或XML编码声明。

自同步

与其它的多字节字符集相比较,它使用的处理的8位的符号的环境中,UTF-8具有以下优点:

  • 第一个字节码序列包含有关它的长度的信息。 这增加了直接搜索的效率。
  • 简化了查找的符号的开始的开始字节被限制到一个固定的值的范围。
  • 没有交集字节值。

比较效益

UTF-8编码是紧凑的。 但是,用于编码东亚字符时(中国,日本,韩国,使用标志中国文字)使用3字节序列。 也UTF-8编码劣于其他形式的编码处理速度的。 二进制分拣线产生相同的结果作为二进制排序的Unicode。

字符编码方案

的字符编码方案包括编码符号的形式和用于单字节位置代码单元的方法。 为了确定编码方案Unicode标准提供了一个初始字节顺序标记(BOM,字节顺序标记)的。

当以UTF-8特征标签的BOM仅由参考限于使用的编码的形式。 在确定尾数UTF-8的问题有,作为它的编码单元的大小是一个字节。 使用BOM这种形式编码的既不需要也不推荐。 BOM可在文本发生从使用字节顺序标记或签名UTF-8编码其它值编码转换。 是3个字节EF BB 16 16 16 BF序列

如何设置UTF-8编码

的 HTML编码 UTF-8安装有以下代码:

META HTTP-当量= “内容类型” CONTENT = “text / html的;字符集= UTF-8” ˃

在PHP UTF-8编码是利用在文件的开始处的标题()函数设定的输出电平值错误之后设置:

˂?腓

使用error_reporting(-1);

标题(“内容类型:文本/ HTML;字符集= UTF-8“);

要连接到MySQL数据库UTF-8编码设置:

˂?腓

mysql_set_charset( 'UTF8');

的CSS文件的编码是UTF-8字符规定如下:

@charset “UTF-8”;

当您保存所有类型的文件,选择无BOM UTF-8编码,否则网站将无法正常工作。 要做到这一点的梦纹需要选择菜单项“修改 - 页面属性 - 标题/编码”的编码改为UTF-8。 其次是重新加载页面,请从“连接的Unicode签名(BOM)»复选标记并应用更改。 如果页面上或数据库中的任何文字介绍编码的另一种形式,它是需要重新输入或重新编码。 当你使用正则表达式的工作,一定要使用修饰符ü。

您还可以在UTF-8编码的文件保存在Windows的“记事本”。 选择菜单项后,“文件 - 另存为...”安装编码的必要形式,并保存为UTF-8的文件。

在文本编辑器记事本++,如果设置比UTF-8等,通过菜单项“转换为UTF-8无BOM»更改字符,并保存在UTF-8。

没有替代

在全球化,在政治和语言的界限被删除的情况下,字符集是具有地方特色,是没有多大用处的。 Unicode是支持所有的本地化单字节字符集。 的UTF-8 - 适当执行的Unicode的,这是一个例子:

  • 它支持范围广泛的工具,包括用ASCII编码的兼容性;
  • 这是失真数据抗性;
  • 简单而有效的治疗;
  • 与平台无关。

随着UTF-8争论什么形式的编码或字符集是更好的出现,变得毫无意义。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.birmiss.com. Theme powered by WordPress.