心得2

2018-01-10  本文已影响0人  Dacade

心得2

定义:(参考条目:http://note.youdao.com/noteshare?id=7626ba13a42457cb2fed6b52dda0c112&sub=D039D1F4175E4FA9A1411F6E88024D05)

uico.jpg

字符与编码 Characters and Encoding

把语言的字符集成,制定出字符集(CharacterSets)通常是国家政府或产业界制定出来的,着名的例子如中国的国家标准GB-2312丶繁体/正体字早期的业界标准Big5丶香港政府制定的香港增补字符集 HKSCS等等。

由於各种字符集的标准不一,若有冲突的编码定义则不同语言文字符号无法在同一文件中出现,需要额外做转换。如中文简体字早期标准GB-2312和繁体/正体字早期标准Big5是不相容的,不但需要额外转换,这两种标准的文字是无法同时出现在一份文件里。

此外,由於编码之间的相容性及应用程序如浏览器的支援不一,会发生编码错误以致显示内容不正确,又称乱码(Mojibake),或甚致是安全漏洞。

Unicode标准与世界语言

由於字符数及编码的特性,由Mark Davis所做的统计来看,Unicode标准中字符数占最多的是中国,占了7成以上,韩国次之占1成多。

64a3a9e580bcdcc1b7e52475e271722.png

Unicode CLDR数据库存有不少数据,可以使用XML或JSON格式取用,用於网站/软件的在地化(L10N, Localiation)及全球化(i18n, Internationalization)。

此外,CLDR亦有地域-语言表,Territory Language Information,详列Unicode 用户贡献但经专家审批的各地域之语言人口侧写。

Unicode标准统一编码的基础设施

其一为为文本中使用的每个字符提供一个数字,而Unicode标准是这些数字的字典。

其二是协助设备处理世界上所有的语言,因而联盟维护一大数据库,为不同的语言和国家提供的术语和格式 (Unicode, 2017)。此数据库名叫CLDR (Common Locale Data Repository),中译为「通用区域资料库」

unicode格式

Unicode 传输格式 8 (UTF-8)

在 ASCII 码基础上发展的协议字符设置。UTF-8 协议提供 ASCII 码的扩展支持,UCS-2 码的翻译,国际 16 进制 Unicode 编码字符设置。与使用字符数据的 ASCII 或扩展 ASCII 编码相比,UTF-8 可获得更大范围的名称。

作为 Unicode 标准一部分的国际标准字符集参考。现在广泛使用的 UCS 标准的版本是 UCS-2,该版本指定的 16 位字符数值已作为世界上大多数语言的编码标准而被接受,并得到了承认。

直接选unicode就可以了。

如果没有特殊字符,ansi保存也没事。

Unicode 的常见表达形式


U+1F600

Unicode列表时如Unicode 5.0的全部表情符号都采取这种编码书写方式

URL在编码时,会把非ASCII字符及一些保留字符做转换,加以%符号以16进制符表示,如:


%F0%9F%98%80

(URL编码工具可用URL Decoder/EncoderATOOL

Unicode 与 Emoji

表情符号(Emoji)是一种象形文字 (图案符号),常在数字文本中使用来代表面孔丶天气丶车辆和建筑物丶食物和饮料丶动物和植物, 或代表情绪丶感觉或活动的图标,通常以丰富多彩的形式呈现。全球有近90%人口使用表情符号。

296ef7b1a65d8e8dbb658f05ff150f5.png

Unicode Emoji的支援需要厂商提供对映的Unicode 字型,如[非礼勿视猴(See-No-Evil Monkey)的表情符号]🙈(https://emojipedia.org/see-no-evil-monkey/),就有多种厂商提供。

另外,如2017年Google Android 8.0有支援不同姓别及肤色的人物表情包。

性别政治

bde7d992ead7aeb440f8f1cb925594b.png

在缅甸的罗兴亚人

Unicode在东亚

->Unicode发展史上,一个重要的挑战和里程碑是统一汉字(Unihan)。

Unihan的早期发展涉及中日韩三种语言所用的汉字,又称CJK,後期以有越南用的汉字加入,称CJKV。

统一汉字的特点在于,如是几种语言共享的符号且经同意,是共享同一编码,专用的汉字则否。

东亚人习惯于处理多字节系统, 对比西方 单字节文化来说。对处理复杂系统来说, 我们东亚的多字节文化将在未来被证明是有优势的(p. 12)。

u.jpg

字集

使用:

因为Unicode比ANSI好用。 自从Windows2K开始,Win的系统内核开始完全支持并完全应用Unicode编写,所有ANSI字符在进入底层前,都会被相应的API转换成Unicode。所以,如果你一开始就使用Unicode,则可以减少转换的用时和RAM开销。 对于JAVA/.NET等这些“新”的语言来说,内置的字符串所使用的字符集已经完全是Unicode。最重要的是,世界上大多数程序用的字符集都是Unicode,因为Unicode有利于程序国际化和标准化。

链接:https://www.zhihu.com/question/23374078/answer/24385963

Unicode 和 UTF-8 有何区别?

UTF-8 是对Unicode编码的一种编码方式。

原因:节省流量和硬盘

Unicode 是「字符集」UTF-8 是「编码规则」其中:字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX

U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX

U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

根据上表中的编码规则,之前的「知」字的码位 U+77E5 属于第三行的范围: 7 7 E 5

0111 0111 1110 0101    二进制的 77E5

0111  011111  100101 二进制的 77E5

1110XXXX 10XXXXXX 10XXXXXX 模版(上表第三行)

11100111 10011111 10100101 代入模版

E 7 9 F A 5

这就是将 U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程。反之亦然

为什幺要使用Unicode?

(1) 可以很容易地在不同语言之间进行数据交换。

(2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。

(3) 提高应用程序的运行效率。

unicode1.jpg

如何编写Unicode源代码?

Unicode和DBCS之间的区别

Unicode的漏洞

http://www.sudu.cn/info/index.php?op=article&id=33364

上一篇下一篇

猜你喜欢

热点阅读