文档章节

UTF-8

Amamatthew
 Amamatthew
发布于 2014/06/26 10:18
字数 1146
阅读 8
收藏 0
点赞 0
评论 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
粉丝 68
博文 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
解决CentOS下中文显示乱码

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

douyur
2016/11/26
15
0
在UNIX下打开文件看内容的时候发现有乱码

场景:一个文件的编码为UTF-8,Unix系统的编码设置也为UTF-8,通过Putty连接到Unix服务器,用VI打开文件,显示乱码. 1,查看Unix的系统的编码(locale 命令):证实为UTF-8 LANG=enGB.UTF-8 LCCTYPE=e...

晨曦之光
2012/04/25
286
0
Tomcat后台中文乱码分析

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

yxzkm
2016/12/27
19
0
utf8和utf-8

在使用中常常遇到utf-8和utf8,现在终于弄明白他们的使用不同之处了,现在来和大家分享一下,下面我们看一下utf8 和 UTF-8 有什么区别 “UTF-8”是标准写法,php在Windows下边英文不区分大小...

varyshare
2016/08/08
62
0
大神救命啊,httpclient4.5 中文附件上传 日志中 filename="??.text" 乱码无法上传。

MultipartEntity reqEntity = new MultipartEntity(); FileBody bin=null; if(newuserid.get("file1") != null){ bin= new FileBody((File)newuserid.get("file1"),ContentType.create("appl......

luo_yangyang
2015/07/17
421
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
3
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
1
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
1
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部