文档章节

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格式

本文转载自:

共有 人打赏支持
上一篇: PHP是什么?
下一篇: MSDN论坛好帮手
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
解决CentOS下中文显示乱码

查看当前系统语言 登陆Linux命令行,输入echo $LANG查看当前系统使用的语言 查看安装的语言包 在命令行中输入locale命令,如有zh_CN,则表示已经安装了中文语言 如果没有中文语言包 通过使用...

douyur
2016/11/26
15
0
Tomcat后台中文乱码分析

web应用程序在提交中文数据的时候,后台经常出现乱码现象。为了彻底分析产生原因,做了一个简单测试: 创建一个简单的java web应用程序,没有使用任何框架,部署在tomcat环境中。 使用谷歌和...

yxzkm
2016/12/27
19
0
【错误异常】 IDEA启动resin错误 illegal utf8 encoding at xxx

idea通过resin第一次加载jsp时,出现错误 illegal utf8 encoding at xxx 一、通过修改resin.conf或resin.xml 在节点下将: 改为(如果不存在就新建):...

林元煌
2017/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

阿里云官方博客
34分钟前
1
0
Coding and Paper Letter(四十四)

资源整理。 1 Coding: 1.Rstudio2019年会“机器学习应用”的幻灯片,代码和数据 rstudio conf 2019 2.R语言包sparkxgb,Spark上XGBoost的R接口。 sparkxgb 3.自动SQL注入和数据库接管工具。 ...

胖胖雕
36分钟前
1
0
Ubuntu最新的主要操作系统放弃32位支持?

现在是2018年,2019年即将到来——64位处理器已经成为主流很长一段时间了。如果你仍然使用32位的电脑,那么是时候把它扔进垃圾箱了。 我为所有基于Linux的操作系统维护者感到自豪,他们有勇气...

Linux就该这么学
37分钟前
1
0
Fundebug发布Vue插件,简化BUG监控接入代码

摘要: 代码越短越好! 我们发布了fundebug-vue插件,可以简化Vue框架接入Fundebug的代码。 Vue如何接入Fundebug 1. 安装fundebug-javascript与fundebug-vue npm install fundebug-javascrip...

Fundebug
44分钟前
1
0
MySQL学习笔记之二

数据库的操作总结就是:增删改查(CURD),今天记录一下基础的检索查询工作。 检索MySQL 1.查询表中所有的记录 mysql> select * from apps;+----+------------+-----------------------+------...

凌宇之蓝
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部