本文来自:javaeye网站

UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛

GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大~

提示:如果您的网站客户群体主要是面向国内用户的,建议使用GBK版本,因为它可以节省空间,及相对utf-8版本来讲稳定一些。
对于DZ论坛来说,很多插件都只支持GBK的,如果需要装较多插件的论坛还是用GBK比较好,而对装较少插件且有特殊用户群的论坛用UTF8比较好。

GBK版本与UTF-8版本功能是一样的.只不过编码方式不同。

GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。

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

GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。

GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准,UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。

简单的说 UTF-8包含了很多世界范围内的语言编码(相当于一个大字库) 比如日文 韩文 都可以用。GBK和GB2312只是中文的,相当于包含的汉字个数的多少。为了方便还是用UTF-8比较好。

区别网上有很多,自己查一下吧,编码格式不一样,支持的字符不同,简单说一下原理
字符串都是unicode码,包括英文,汉字...其他字符
unicode可以被转化为字节(byte),如何转换呢,就通过gbk、utf-8、gb2312等编码方式。当把字节转换回字符串的时候,也要用相应的编码方式进行转换。
比如客户端把unicode码通过utf-8转换为二进制流(也就是字节byte),而到了服务器端用gbk编码来把这个二进制流转换为字符串(unicode)的时候,就会出现乱码。必须也要用相应的编码方式进行转换。

gbk(encode)                  gbk(decode)
unicode---------------->byte[]------------------------------>unicode
String                二进制流                              String

通用转换格式UTF(Universal Transformation Format)
UTF-8是UNICODE的一种变长字符编码

GBK: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,
并涵盖了原Unicode中所有的汉字20902
GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准

GB 2312或GB 2312-80是一个简体中文字符集的中国国家标准
GB 2312标准共收录6763个汉字

区别很简单,不同的字符集。

什么叫字符集,其实就是一张对照表。"啊"字对应UNICODE编码就是"554A",对应的GBK编码是"B0A1".
什么是对照表呢,简单举个例子,就是班级的点名册,"张三"对应10号。计算机不能存储"张三",就存储个"10",取出一个10,按对照表一查,返回一个"张三"。
但是在全学校的点名册里,"张三"对应15号。不同的点名册就是不同的字符集。


在你把"10"存进去了,取出来后,按照班级点名册取出了"张三",很正确,如果用了全学校的点名册,返回给你个外国人,假设你不认识英文,你就觉得乱码
了,其实没乱,你可以把它返回成10,再用班级点名册去对照,"张三"不就出来了。注意:如果全学校的点名册里没有10对应的人,按照约定就返回给
你"????",这个时候才真的乱码了,返回不了了。

不同的点名册,就是不同的字符集。GB2312是一个点名册,后来班里又插班进来俩学生,GB2312加俩学生,老师说,点名册不一样了,换个名吧,叫GBK好了。

中国有个学生叫"张三",在中国是"10"号,后来出国了,联合国给他个号"20"号,一个GBK,一个UTF8,但都是一个人,对应不同的号而已。

ps:UTF-8是UNICODE的变种,从UNICODE编码可以计算出一个字对应的UTF-8编码。

字符编码GB2312、GBK、UTF-8的区别的更多相关文章

  1. 字符编码-UNICODE,GBK,UTF-8区别【转转】

    字符编码介绍及不同编码区别 今天看到这篇关于字符编码的文章,抑制不住喜悦(总结的好详细)所以转到这里来.转自:祥龙之子http://www.cnblogs.com/cy163/archive/2007 ...

  2. 批量转换文件字符编码(GBK转UTF-8)

    今天收到一份代码,拖到IDE中发现乱码,看来下编码是GBK的(

  3. C语言-字符编码转换:UTF与GB2312

    依赖库libiconv,libiconv库的交叉编译不做描述,网上很多 #include <stdio.h> #include <stdlib.h> #include < ...

  4. GB2312,GBK和UTF-8的区别

    GBK GBK包含全部中文字符, GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1.至于UTF-8编码则是用以解决国际上字符的一种多字节编码 ...

  5. 跨平台字符编码转换GBK、UTF8

    #if (defined _WIN32 || defined _WIN64) # include <windows.h> # include <stdio.h> # inclu ...

  6. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  7. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别

    汉语unicode编译方式,BIG5是繁体规范,GB是简体规范 GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码. BIG5编码, GB编码(GB2312, GBK, ...), U ...

  8. python 字符编码讲解

    ANSI不是一种具体的编码格式 ANSI在中文Windows操作系统代码指的是GBK编码 ANSI在中文Mac操作系统代码指的是UTF-8编码 ANSI在其他国家的操作系统中有其他的编码格式 #ASC ...

  9. Python2.7字符编码详解

    目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3.1 ASCII(初创) 1.3. ...

随机推荐

  1. ls -alrth 及ls 详解

    idcdpi  抓包过程中 用了命令  ls   - alrth :命令,所以回头重新学习 ls命令 linux ls和 ll 命令 标签: linuxsocketssolarisbash出版扩展 2 ...

  2. this prototype 闭包 总结

    this对象 整理下思路: 一般用到this中的情景: 1.构造方法中 function A(){ this.name="yinshen"; } var a=new A(); co ...

  3. String的内存分配

    1.String类是final类不能被继承 2.String str="abc"的内部工作 (1)先在栈中定 一个名为str的String类的引用变量 String str: (2 ...

  4. 关于Unity3D中Resources动态加载NGUI图片的方法

    在NGUI中有些图片我需要动态进行变更或者加载,怎么办? 首先在项目中创建一个Resources目录,接着把需要的图片放在这里面,可以有子文件夹么?当然可以,文件结构很重要哦~ NGUI加载图片的方法 ...

  5. 练习英语ing——[POJ1004]Financial Management

    [POJ1004]Financial Management 试题描述 Larry graduated this year and finally has a job. He's making a lo ...

  6. DataSnap 用TStream 传递大数据 返回流大小为-1的情况

    DataSnap可以直接传递和返回TStream类型的参数,这点是很方便的.但是很多人发现好像大小稍微大点就工作不正常了,就变相使用其它类型转换来转换去,这样便利性就失去了. 官方有篇博客很详细的介绍 ...

  7. BZOJ 3540 realtime-update 解题

    分析一下题意,大约是给定一串牛,然后找到一个跨越距离最长的牛子串使得在这个范围内白牛和花牛一样多. 白牛可以任意涂成花牛. 既然"白牛可以任意涂成花牛",那么我们需要找到一个最长的 ...

  8. Java 7 的7个新特性

    1.对集合类的语言支持:(??) 2.自动资源管理: 3.改进的通用实例创建类型推断:(??) 4.数字字面量下划线支持:(√) 5.switch中使用string:(√) 6.二进制字面量:(√) ...

  9. #define 的一些用法 以及 迭代器的 [] 与 find()函数的区别

    #include "stdafx.h" #include <map> #include <string> #include <iostream> ...

  10. 2.2 编程之美--不要被阶乘吓到[zero count of N factorial]

    [本文链接] http://www.cnblogs.com/hellogiser/p/zero-count-of-N-factorial.html [题目] 问题1:‍给定一个整数N,那么N的阶乘N! ...