欢迎来到天天文库
浏览记录
ID:57059664
大小:92.50 KB
页数:47页
时间:2020-07-30
《UTF和BOM的常见问题课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、UTF和BOM的常见问题zsjforcn2011-08-30123涉及UTF或编码形式的一般性问题4Q:Unicode是16位编码的吗?A:不是。1991年到1995年第一版Unicode确实是16位编码,但自从Unicode2.0(1996年7月)它再也不是16位编码了。Unicode标准编码字符集从U+0000到U+10FFFF,总共有21位编码空间。根据你自己的需要选择不同的编码形式:UTF-8,UTF-16或者UTF-32,每个字符会被表示成1到4个8位字节,1到2个16位字或者1个32位双字。5Q:Unicode文本可以有多种表示吗?A:可以。有多种表示U
2、nicode数据的方式,包括UTF-8,UTF-16和UTF-32。另外,还有一些压缩转换的方式,例如,Unicode技术标准#6:Unicode的一种标准压缩方案(SCSU)。6Q:什么是UTF?A:Unicode转换格式(UTF)是一种算法,它将每个Unicode编码点(除了代理编码点)映射到一个唯一的字节序上。每种UTF都是可逆的。故,每种UTF都支持“无损压缩行程”:将任何Unicode编码的字符S映射到一串字节序上,而反过来也会生成S。为了保证此行程,UTF映射“必须”也将所有不合法的Unicode字符编码点映射到唯一的字节序上。这些非法的编码点包含了66
3、个非字符(从FFFE到FFFF)和其他代理。虽然SCSU压缩方式是可逆的,但它不是UTF,因为依赖于不同的SCSU压缩器,同样的字符串可以映射到多个不同的字节序上。7Q:有哪些字节序不是由UTF生成的?如何表示它们?A:所有的UTF都无法生成任意的字节序。例如,在UTF-8中每个形如110xxxxx的字节序必须紧跟形如10xxxxxx的字节序。例如<110xxxxx0xxxxxxx>是非法的,不应该被生成。当在转换或翻译时,遇到这个非法字节序,UTF-8一致性处理“必须”将第一个字节序110xxxxx当作终止错误:例如,要么发送错误信号,要么过滤掉该字节序,或者要么
4、用如FFFD(REPLACEMENTCHARACTER)这样的标记符替代该字节序。而后两者,它将继续处理第二个字节序0xxxxxxx。一致性处理“必须”不能将非法或病态的字节序翻译成字符,但是,它可能采取错误恢复措施。任何一致性处理都不会使用不规则的字节序来编码带外数据。8Q:应该支持哪些UTF编码形式?A:UTF-8在web上普遍使用。UTF-16在Java和Windows系统中使用。UTF-8和UTF-32在很多Linux和Unix系统中使用。它们之间的转换是基于快速、无损的算法的。这使得内部存储或处理仅使用一种专有的UTF编码,同时又支持多种编码形式的数据的输
5、入输出变得非常容易。9Q:各种UTF编码之间的区别是什么?A:如下表格总结了各种UTF编码的一些属性。表中表示字节序由一个字节序标记决定的。它在数据流的头部给出,否则为big-endian。名字UTF-8UTF-16UTF-16BEUTF-16LEUTF-32UTF-32BEUTF-32LE最小编码点0000000000000000000000000000最大编码点10FFFF10FFFF10FFFF10FFFF10FFFF10FFFF10FFFF单位编码大小8bits16bits16bits16bits32bits32bits32bits字节序N/A6、OM>big-endianlittle-endianbig-endianlittle-endian每字符最少字节数1222444每字符最多字节数444444410Q:有没有标准的方法来包装一个Unicode字符使其符合8位ASCII流?A:4个建议让Unicode符合8位格式。a)使用UTF-8。它保留了ASCII而非Latin-1,因为字符>127时和Latin-1不一致。UTF-8仅仅为ASCII字符使用ASCII中的字节。因此,在用ASCII字符作为语法字符的任何重要环境中都表现不错,举例如,文件名、标记语言等等,但是所有其他字符可能使用任意的字节。7、例如:“Latin小字母s急性”(015B)会被编码为2字节:C59B。b)使用Java或C的转义风格:uXXXXX或xXXXXX。这些格式在文本文件中是非标准的,但在上面谈到的语言框架下有良好的定义,主要就是针对源文件。例如:波兰语“wyjście”中间使用了“Latin小字母s急性”(015B)编码后看起来是这样的:“wyju015Bcie”。c)在HTML或XML中使用XXXX;或DDDDD;这样的数字字符转义风格。同样,这些格式在文本文件中是非标准的,但在这些标记语言框架下有良好的定义。例如:“wyjście”编码后看起来是这样的:“wy
6、OM>big-endianlittle-endianbig-endianlittle-endian每字符最少字节数1222444每字符最多字节数444444410Q:有没有标准的方法来包装一个Unicode字符使其符合8位ASCII流?A:4个建议让Unicode符合8位格式。a)使用UTF-8。它保留了ASCII而非Latin-1,因为字符>127时和Latin-1不一致。UTF-8仅仅为ASCII字符使用ASCII中的字节。因此,在用ASCII字符作为语法字符的任何重要环境中都表现不错,举例如,文件名、标记语言等等,但是所有其他字符可能使用任意的字节。
7、例如:“Latin小字母s急性”(015B)会被编码为2字节:C59B。b)使用Java或C的转义风格:uXXXXX或xXXXXX。这些格式在文本文件中是非标准的,但在上面谈到的语言框架下有良好的定义,主要就是针对源文件。例如:波兰语“wyjście”中间使用了“Latin小字母s急性”(015B)编码后看起来是这样的:“wyju015Bcie”。c)在HTML或XML中使用XXXX;或DDDDD;这样的数字字符转义风格。同样,这些格式在文本文件中是非标准的,但在这些标记语言框架下有良好的定义。例如:“wyjście”编码后看起来是这样的:“wy
此文档下载收益归作者所有