文档章节

UTF-8

Amamatthew
 Amamatthew
发布于 2014/06/26 10:18
字数 1146
阅读 8
收藏 0

中文名     UTF-8

外文名     8-bit Unicode Transformation Format

又    称    万国码

作    者    Marius Bancila

目录
    1基本简介
    2字符集
    3优缺点
        ▪ 优点
        ▪ 缺点
    4修正更新

1基本简介

字符集简史

在所有字符集中,最知名的可能要数被称为ASCII的7位字符集了。它是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。


但是,由于他是针对英语设计的,当处理带有音调标号(形如汉语的拼音)的亚洲文字时就会出现问题。因此,创建出了一些包括255个字符的由ASCII扩展的字符集。其中有一种通常被称为IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符。另一种8位字符集是ISO 8859-1Latin 1,也简称为ISOLatin-1。它把位于128-255之间的字符用于拉丁字母表中特殊语言字符的编码,也因此而得名。


欧洲语言不是地球上的唯一语言,因此亚洲和非洲语言并不能被8位字符集所支持。仅汉语字母表(或pictograms)就有80000以上个字符。但是把汉语、日语和越南语的一些相似的字符结合起来,在不同的语言里,使不同的字符代表不同的字,这样只用2个字节就可以编码地球上几乎所有地区的文字。因此,创建了UNICODE编码。它通过增加一个高字节对ISO Latin-1字符集进行扩展,当这些高字节位为0时,低字节就是ISO Latin-1字符。UNICODE支持欧洲、非洲、中东、亚洲(包括统一标准的东亚象形汉字和韩国象形文字)。但是,UNICODE并没有提供对诸如Braille, Cherokee, Ethiopic, Khmer, Mongolian, Hmong, Tai Lu, Tai Mau文字的支持。同时它也不支持如Ahom, Akkadian, Aramaic, Babylonian Cuneiform, Balti, Brahmi, Etruscan, Hittite, Javanese, Numidian, Old Persian Cuneiform, Syrian之类的古老文字。


事实证明,对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Universal Transformation Format)。常见的UTF格式有:UTF-7, UTF-7.5, UTF-8,UTF-16, 以及 UTF-32。

UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来
编码。对于英文字符较多的论坛则用UTF-8节省空间。

GBK编码和UTF-8编码的区别

GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准。GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。

UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。

UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛,GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。

BOM是什么?UTF-8(无BOM)和UTF-8这两个有什么区别呢?

BOM: Byte Order Mark

UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支持UTF-16,UTF-32才加上的BOM。

BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。一般我用UTF-8无BOM格式

本文转载自:

共有 人打赏支持
Amamatthew
粉丝 67
博文 1050
码字总数 76443
作品 0
厦门
后端工程师
docker 容器中不支持中文的解决方法

最近的项目中Docker容器中生成的日志文件是中文名字,但是文件名是????.txt 进入容器内部: docker exec -t -i 容器名 /bin/bash 查看容器的语言环境: [root@12ec64254bc4 /]# locale LANG...

期待有一天
2017/08/02
0
0
ubuntu server修改语言

把语言环境变量改为英文 将Ubuntu系统语言环境改为英文的en_US.UTF-8 查看当前系统语言环境 locale 编辑配置文件,将zhUS.UTF-8改为enUS.UTF-8,zh改为en 继续查看更改后的系统语言变量,如果...

李茂冉
2016/05/23
19
0
Ubuntu 12.04 Server中文下配置UTF-8中文/英文环境

#安装中文语言包 apt-get install language-pack-zh-hans locale-gen cd /etc/defaultcp locale locale.bak #中文 cat <localeLANG="zh_CN.UTF-8"LANGUAGE="zh_CN:en"LCCTYPE="zhCN.UTF-8"EO......

Stefan阿钢
2014/11/19
0
0
ubuntu 如何改语言

有个ubuntu server被人安装成中文之后 噩梦就一直没有结束, 我需要把 环境设为 en_US.UTF-8, 不知道什么时候 又会变回来, 我已经在 /etc/default/locale里面修改为: LANG=enUS.UTF-8 LANGUAG...

宏哥
2012/11/19
3.9K
12
Unicode、UTF-8、UTF-16之间的关系

1、为什么需要Unicode在很早以前所有,在计算机的世界里只有ASCII,后来多了一些控制字符、标点等,最后就是今天的世界里你能够看到很多种语言在一个文档中,例如:English, العربية,...

topwqp
2016/02/22
45
0

没有更多内容

加载失败,请刷新页面

加载更多

Future,Thread,Callable,Executors.newXXXThreadPool

package cunrent.future;import java.util.concurrent.*;public class FutureCook { public static void main(String[] args) throws InterruptedException, ExecutionExcept......

noteman
20分钟前
2
0
shing boot 做session共享 redis

因为多台服务器负载均衡,在获取客户端的sessionId的时候,会出现第一次和第二次不一样,因为负载均衡的缘故,你的服务器最少两台,那么客户端连接第一次请求和第二次请求如果不是同一台服务...

小马_wolf
25分钟前
1
0
【Springboot+mybatis】 解析Excel并批量导入到数据库

【Springboot+mybatis】 解析Excel并批量导入到数据库置顶 2018年01月16日 20:05:52 冉野丶 阅读数:4060 标签: excel导入数据库 文件上传 excel解析 更多个人分类: POI 工作问题归纳...

奥特曼之王
27分钟前
2
0
Mac OS下安装Axure RP 8.0.0.3312 中文破解版

Mac下一款快速原型设计工具——Axure RP,有了它可以大大提高你的工作效率。此次带来的是Axure RP 8.0.0.3312 版本。 介绍 Axure RP 能帮助网站需求设计者,快捷而简便的创建基于网站构架图的...

james_laughing
28分钟前
1
0
【Guava】使用Guava的RateLimiter做限流

一、常见的限流算法 目前常用的限流算法有两个:漏桶算法和令牌桶算法。 1.漏桶算法 漏桶算法的原理比较简单,请求进入到漏桶中,漏桶以一定的速率漏水。当请求过多时,水直接溢出。可以看出...

大海201506
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部