首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Unicode,GBKUTF-8

但如果有人问你,“Unicode,GBKUTF-8有什么区别?”, 你能自信地给他一句简短清晰的回答吗? 如果不能的话, 那还是看一下这篇文章吧....而我之所以就这个问题专门写一篇文章,原因是前两天在与公司一位有十几年工作经验的JAVA程序员对接 API时, 我问他返回的汉字是什么编码的, 而他回答说"直接返回unicode”....这其实也不怪Windows, 因为这是在Unicode出现的早期设计的, 那时我们还没意识到UCS-2的不足, 而且UTF-8还没有被发明出来....这也是为什么Windows对UTF8的支持如此之差的原因之一吧. 后记 说了这么多, 现在让我们回到一开始的问题, 如果有人问你"Unicode,GBKUTF-8有什么区别?”..., 我想你应该知道该怎么回答了吧: Unicode是 一种字符集, 而GBKUTF-8都是编码, 因此Unicode后两者不是一类事物, 是无法进行对比的.

1.5K20

再谈java乱码:GBKUTF-8互转尾部乱码问题分析

一直以为,java中任意unicode字符串,可以使用任意字符集转为byte[]再转回来,只要不抛出异常就不会丢失数据,事实证明这是错的。...用ISO-8859-1中转UTF-8数据 设想一个场景: 用户A,有一个UTF-8编码的字节流,通过一个接口传递给用户B; 用户B并不知道是什么字符集,他用ISO-8859-1来接收,保存; 在一定的处理流程处理后...为什么奇数个汉字GBK会出错 直接对比两种字符集奇偶字数的情形 重新封装一下前面的逻辑,写一段代码来分析: public static void demo(String str) throws Exception...-8","ISO-8859-1"); demo(str2,"UTF-8","ISO-8859-1"); demo(str1,"UTF-8","GBK"); demo(str2,"UTF-8...unicode是安全的,因为他是java使用的标准类型,跨平台无差异。

3.3K10

Unicode UTF-8 有何区别?

结果扩展之后的编码方案被称为GBK 标准,GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)符号。...他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母符号 的编码!...UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。 UTF-8最大的一个特点,就是它是一种变长的编码方式。...从unicode到uft-8并不是直接的对应,而是要过一些算法规则来转换。...后来互联网火了,国际标准组织又搞出了utf-8/utf-16/utf-32,这三个编码方案主要是面向传输的,当然也是一种存储方案,这时候,unicode才被全世界所应用。

45120

java基础之字符问题】UTF-8GBK的区别与联系

2 编码 编码就是字符的表现形式,例如unicode字符集就能够用UTF-8、UTF-16UTF-32编码。 GBK与UTF-8转换的核心问题分析。...GBK是一种字符集,而UTF-8是一种编码,因此通常我们研究的GBK与UTF-8的转换问题,其实就是GBK与Unicode字符集的转化问题,由于GBKUnicode的字符(主要讨论汉字字符)之间没有必然的联系...,因此通常是采用查表的方法来实现GBKUnicode之间的转化。...其实处理的方法有很多,如Windows API / IBM ICU4C 等,作者推荐使用windows平台下的iconv()函数,因为相对于使用Windows API,iconv库可以方便的跨平台;而相对于...下面给出在Windows下使用MinGWMSYS编译的过程。

1.4K20

再再谈java乱码:GBKUTF-8互转尾部乱码问题分析(续)

在《再谈java乱码:GBKUTF-8互转尾部乱码问题分析》我们分析了,如果从一个UTF-8 的字节序列,经过 new String(b,"GBK") 的操作,"可能"(与总字节数有关)会破坏数据。...同时,可参考:一段java代码带你认识锟斤拷 GBK字节码用UTF-8解码 来看一段代码: public static void main(String[] args) throws IOException...言归正传,实际上我们关注的是UnicodeUTF-8之间的关系: Unicode符号范围 UTF-8编码方式 0000 0000-0000 007F 0xxxxxxx 0000 0080-0000 07FF...-8"); System.out.println(str); 输出结果: 比如用 “中国86" 来测试,java8,打印是这样的: �й�86 而 java6、7打印是这样的: �й� 如此看来,jdk6...小结 先回顾一下前文的结论: 对于任意字节流,使用ISO-8859-1 转为字符串再转回来,是安全的;使用GBKUTF-8可能会破坏数据。

2.2K30
领券