关于ANSI,unicode与utf-8的区别

关于ANSI,unicode与utf-8的区别

非常好的一篇文章,值得一看,特转之

关于编码ansi、GB2312、unicode与utf-8的区别

先做一个小小的试验:

在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ansi、unicode、utf-8这三种编码的txt文件。然后,在该文件夹上点击右键,选择“搜索(E)…”。

搜索“天气”二字,可以搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件。

原因:

1.中文操作系统默认ansi编码,生成的txt文件默认为ansi编码,所以,可以搜索出来。

2.unicode是国际通用编码,所以,可以搜索出来。

3.utf-8编码是unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。utf-8在网络之间传输时可以节约数据量。所以,使用操作系统无法搜索出txt文本。

按照utf-8创始人的愿望:

端(unicode)——传输(utf-8)——端(unicode)

但是,后来,许多网站开发者在开发网页时直接使用utf-8编码。

端(utf-8)——传输(utf-8)——端(utf-8)

所以,在浏览器上看到的编码是:unicode(utf-8)。正因为在浏览器上这么并列地列出unicode(utf-8),造成许多网友(甚至不少程序员)误认为unicode=utf-8。其实,按照utf-8创始人的原意,在开发网页时使用utf-8编码是错误的做法,并且,早期的浏览器也不支持解析utf-8编码。但是,众人的力量是巨大的,微软不得不“趋炎附势”,在浏览器上支持解析utf-8编码。

问题是:utf-8编码影响了网站开发者,或者说,网站开发者“扩展”了utf-8编码的使用范围。但是,网站开发者仍然无法影响各类文档的开发者,所以,word文档和一些国际通用的文档仍然使用unicode编码而不使用utf-8编码。

比如:“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。

在中文和日文操作系统里生成的(txt和xml)文件的编码虽然都是ansi,但是,在简体中文系统下,ansi 编码代表 GB2312 编码,在日文操作系统下,ansi 编码代表 JIS 编码。不同 ansi 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ansi 编码的文本中。

结论:国际文档(txt和xml)使用unicode编码是正宗做法;操作系统和浏览器都能够“理解”unicode编码。浏览器“迫于压力”才“理解”utf-8编码。但是,操作系统有时只认unicode编码。

Unicode与Unicode big endian的区别:你吃鸡蛋时先吃小头还是先吃大头?Unicode与Unicode big endian的区别就是在编码时小头优先与大头优先的区别。“随波逐流”使用Unicode就OK了

时间: 2024-10-26 21:19:00

关于ANSI,unicode与utf-8的区别的相关文章

字符串处理 - ANSI - Unicode - UTF8 转换

#include <stdio.h> #include <windows.h> #include <locale.h> #define BUFF_SIZE 1024 wchar_t * ANSIToUnicode( const char* str ) { int textlen ; wchar_t * result; textlen = MultiByteToWideChar( CP_ACP, 0, str,-1, NULL,0 ); result = (wchar_t

unicode,ansi,utf-8,unicode big endian编码的区别

作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这

Ansi UNICODE,GBK,UTF-8区别

http://my.oschina.net/saintzbs/blog/165034 http://my.oschina.net/saintzbs/blog/165034 http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html 1:可以借助于文本编辑页面和Compare进行理解.      Unicode.utf-8.GB2312等,但是在windows命令行里敲notepad进入文本编辑页面.保存时需要选择编码方式,但是不存在GB

Unicode、UTF-8 和 ISO8859-1到底有什么区别

说明:本文转载于新浪博客,旨在方便知识总结.原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687".

ascii、unicode、utf、gb等编码详解

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"计算机". 开始计算机只在美国用.八位的字节一共可以组合出256(2的8次方)种不同的状态. 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端.打印机遇上约定

ascii、unicode、utf-8、gbk 区别

原文:https://blog.csdn.net/u010262331/article/details/46013905 ASCII:遇上0×10, 终端就换行: 遇上0×07, 终端就向人们嘟嘟叫: 遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母.把这些0×20以下的字节状态称为"控制码".把所有的空 格.标点符号.数字.大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了.大家看到这样,都感觉很好,于是大家都把这个方

python 保存文本txt格式之总结篇,ANSI,unicode,UTF-8

是否还曾记得如何保存成想要格式,那是多么的折腾,是不是莫名起码就变成ANSI或者UTF-8了 今天我来让大家随心所欲的保存想要的格式 首先说下今天的主角 import codecs 使用他才能保存成想要的格式 工作原理,首先把保存的数据解码程unicode格式,然后对应相应的编码,写入文件即可 文本格式对应表 ANSI---->GBK UTF-8---->UTF-8 Unicode---->UTF-16 只有中间才是对应的,其他都是不对应的,多坑爹 基本操作就是 #!/usr/bin/e

MFC格式转换 UTF8 ANSI UNICODE

函数拿起来就可以用 参数说明:sChartSet : FromANSI(ANSI->UNICODE) , ToANSI (UNICODE->ANSI) , FromUTF8 (UTF8->UNICODE) , ToUTF8 (UNICODE->UTF8) CString CSqlConTestDlg::UnicodeCovert(CString sSourceStr , CString sCharSet) { bool bToUnicode = true; if(!strnicmp

java中的char中unicode和utf的关系

char是Java的基础类型(原类型 ),是字符类型.在Java中字符是基于Unicode编码的,所以一个Java的字符占2个字节,字符的内容存的是unicode的码值(二进制数字).问题来了,程序是怎么把unicode的码值转换为我们要的程序数据?例如:汉字的'汉'对应的unicode码值为:0x6C49.我们想要的程序数据为'汉',而计算机存储的为码值.如何把码值‘0x6c49’显示为‘字’,需要一个转换过程. 这个转换过程需要一个转换规则.转换规则的书面写法为UTF(UCS Transfo