关于utf8 unicode gbk 编码乱码汇总

时间:2021-05-14 14:13:34

首先从一个问题说起:

插入一个中文到blob类型(mysql编码是utf-unicode-ci).

insert into  blobtype(data) values('中文你好')

复制数据显示为:

枃浣犲ソ * 

这是为什么?

blob存进去的出来为什么不是中文你好,因为编码的问题,我们复制后直接显示是asci编码。转成utf8编码就可以看到“中文你好”了。

ansi为什么能显示中文?

百科:不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准。这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。http://baike.baidu.com/view/1273097.htm?fr=aladdin

 

unicode和utf8不是一个东西。

中文你好 这4个字

中文转unicdoe是\u4e2d\u6587\u4f60\u597d。

中文转utf8 

http://tool.chinaz.com/Tools/UTF-8.aspx

 

 

echo json_encode("中文"); //"\u4e2d\u6587" 

在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

 

一、先来看一些有趣的字符编码转换  

代码 以GBK格式保存 以UTF-8格式保存
String str = "cn中国";    
java.net.URLEncoder.encode(str, "iso-8859-1") cn%3F%3F cn%3F%3F
java.net.URLEncoder.encode(str, "gbk") cn%D6%D0%B9%FA cn%D6%D0%B9%FA
java.net.URLEncoder.encode(str, "utf-8") cn%E4%B8%AD%E5%9B%BD cn%E4%B8%AD%E5%9B%BD
new String(str.getBytes(),"iso-8859-1") cn???ú cn??????
new String(str.getBytes(),"gbk") cn中国 cn涓浗
new String(str.getBytes(),"utf-8") cn?й? cn中国

 

 

http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html