如题,编码不一样经常出现乱码。
windows都是gb18030吧,linux用utf-8的比较多貌似。为什么会这样?
linux下用utf-8有什么优势吗?和gb18030有什么区别
-
- 帖子: 509
- 注册时间: 2008-09-06 10:04
- xhy
- 帖子: 3916
- 注册时间: 2005-12-28 1:16
- 系统: Ubuntu 12.10 X64
- 来自: 火星
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: linux下用utf-8有什么优势吗?和gb18030有什么区别
gb18030 是中国政府规定的,所以windows要想出售必须使用它。微软没有选择余地。chenwl 写了:如题,编码不一样经常出现乱码。
windows都是gb18030吧,linux用utf-8的比较多貌似。为什么会这样?
然而gb18030本身从设计上来讲是有缺陷的,而且不能避免由于字节错位带来的问题。
utf-8本身是一个非常优秀的设计,它唯一的问题就是诞生得太晚,如果utf-8早十年诞生的话,那就没其它编码集什么事了。
另外,识别 utf-8 和 gb18030 一点也不难,问题在于开发 Linux 软件的人大多数都使用 utf-8 而不使用gb18030,所以没有人会想到要去做这个识别。
-
- 帖子: 5
- 注册时间: 2008-12-11 15:24
Re: linux下用utf-8有什么优势吗?和gb18030有什么区别
一直用苹果系统,编码格式就是UTF-8,打开txt文件经常乱码
原来是这样,学习了
原来是这样,学习了
-
- 帖子: 22
- 注册时间: 2008-11-27 22:15
-
- 帖子: 509
- 注册时间: 2008-09-06 10:04
-
- 帖子: 6
- 注册时间: 2008-09-24 9:04
Re: linux下用utf-8有什么优势吗?和gb18030有什么区别
国家标准GB18030-2000《信息交换用汉字编码字符集基本集的扩充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是未来我国计算机系统必须遵循的基础性标准之一。为保证该标准顺利贯彻执行,国家质监总局将在9月1日起首先对影响广泛的计算机操作系统进行执法检查,凡不符合该标准的产品,视为不合格产品。
GB 18030收录了27484个汉字,总编码空间超过150万个码位,为解决人名、地名用字问题提供了方案,为汉字研究、古籍整理等领域提供了统一的信息平台基础。
UTF-8编码的优点:
UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
UTF-8编码的缺点:
你无法从UNICODE字符数判断出UTF-8文本的字节数,因为UTF-8是一种变长编码它需要用2个字节编码那些用扩展ASCII字符集只需1个字节的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集 8位字符的UTF-8编码会被email网关过滤,因为internet信息最初设计为7为ASCII码。因此产生了UTF-7编码。 UTF-8 在它的表示中使用值100xxxxx的几率超过50%, 而现存的实现如ISO 2022, 4873, 6429, 和8859系统,会把它错认为是C1 控制码。因此产生了UTF-7.5编码。
修正的UTF-8:
java使用UTF-16表示内部文本,并支持用于字符串串行化的非标准的修正UTF-8编码。标准UTF-8和修正的UTF-8有两点不同:修正的UTF-8中,null字符编码成2个字节(11000000 10000000) 而不是标准的1个字节(00000000),这样作可以保证编码后的字符串中不会嵌入null字符。因此如果在类C语言中处理字符串,文本不会在第一个null字符时截断(C字符串以null结尾)。在标准UTF-8编码中,超出基本多语言范围(BMP - Basic Multilingual Plain)的字符被编码为4字节格式,但是在修正的UTF-8编码中,他们由代理编码对(surrogate pairs)表示,然后这些代理编码对在序列中分别重新编码。结果标准UTF-8编码中需要4个字节的字符,在修正后的UTF-8编码中将需要6个字节。
GB 18030收录了27484个汉字,总编码空间超过150万个码位,为解决人名、地名用字问题提供了方案,为汉字研究、古籍整理等领域提供了统一的信息平台基础。
UTF-8编码的优点:
UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
UTF-8编码的缺点:
你无法从UNICODE字符数判断出UTF-8文本的字节数,因为UTF-8是一种变长编码它需要用2个字节编码那些用扩展ASCII字符集只需1个字节的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集 8位字符的UTF-8编码会被email网关过滤,因为internet信息最初设计为7为ASCII码。因此产生了UTF-7编码。 UTF-8 在它的表示中使用值100xxxxx的几率超过50%, 而现存的实现如ISO 2022, 4873, 6429, 和8859系统,会把它错认为是C1 控制码。因此产生了UTF-7.5编码。
修正的UTF-8:
java使用UTF-16表示内部文本,并支持用于字符串串行化的非标准的修正UTF-8编码。标准UTF-8和修正的UTF-8有两点不同:修正的UTF-8中,null字符编码成2个字节(11000000 10000000) 而不是标准的1个字节(00000000),这样作可以保证编码后的字符串中不会嵌入null字符。因此如果在类C语言中处理字符串,文本不会在第一个null字符时截断(C字符串以null结尾)。在标准UTF-8编码中,超出基本多语言范围(BMP - Basic Multilingual Plain)的字符被编码为4字节格式,但是在修正的UTF-8编码中,他们由代理编码对(surrogate pairs)表示,然后这些代理编码对在序列中分别重新编码。结果标准UTF-8编码中需要4个字节的字符,在修正后的UTF-8编码中将需要6个字节。