在浏览一些网址中,我们可以看到这样一些特别的现象,就是网址中会出现一些百分号(%)和一字母数字组成的让我们看不明白的乱码,这究竟是怎么回事,它们又都是些什么东西呢?
其实,这里由%和数字字母组成的有规律性的“乱码”它们并不真是乱码,它们是一种特殊的编码,有电脑基础的人就知道,计算机它是不认得中文汉字的,要让计算机认识这些编码必须要转换成一些字母和数字等组成的代码。
事实上,我们在浏览器地址栏中看到的由%号和字母数字组成的乱码,我们可以发现它们有一些规律,即都是三个字符一组,排在最前面的肯定是百分号%。它们不是什么乱码,它们其实是UTF-8编码或者gbk(GB2312)编码,那些百分号(%)后面的数字和字母其实就是16进制数。
中文的gbk(GB2312)编码
如果是中文的gbk(GB2312)编码,那么它的形式应该是这样的,即一个汉字对应两组%xx,即%xx%xx,比如http://www.baidu.com/baidu?tn=baidu&word=%D6%D0%B9%FA 这个网页地址是百度的,百度是使用GB2312编码的,这个网址中我们可以看到的特殊代码是“%D6%D0%B9%FA”,其中前面的“%D6%D0”就对应中文汉字“中”字,后面的“%B9%FA”就对应中国汉字“国”字。
中文的UTF-8编码
如果是中文的UTF-8编码,那么它的形式应该是这样的,即一个汉字对应三组%xx,即%xx%xx%xx,比如http://www.icpoline.com/tag/%e7%bd%91%e6%b0%91 ,这个网址是本站IcpOline.com的网页,IcpOline使用的是UTF-8编码,这个网址中的”%e7%bd%91%e6%b0%91″对应着中文汉字“网民”,即“%e7%bd%91”对应汉字“网”,“%e6%b0%91”对应中文汉字“民”。
再看个例子
http://www.google.cn/search?q=%BA%BA%D7%D6&ie=GB2312&oe=GB2312&hl=zh-CN(GB2312编码)
http://www.google.cn/search?complete=1&hl=zh-CN&q=%E6%B1%89%E5%AD%97&meta=&aq=null(UTF-8编码)
上面这两个地址在浏览器中都会显示谷歌关于关键词“汉字”的搜索结果网页,只不过前面的一个是GB2312编码网页,后面一个是UTF-8编码网页,我们可以很明显的看出它们中“乱码”的区别。这样就可以替换上述网址格式中粉色部分的“乱码”来解码。
为什么要使用这样的编码?
这是为了兼容一些设备,有些设备只能传ASCII码,只认识128个字符,不认识汉字。(作者:icpoline)
http://www.icpoline.com/archives/4109
=======================================================
利用百度进行URL编码解码
分享到:
相关推荐
实现十六进制到中之间的转化,以及中文到十六进制之间的逆转换
可以把十六进制转换成中文、文本、字符串,也可以把中文、文本、字符串转换成十六进制,同时生成十六进制与字符的对照表,主要用于对抓包的十六进制数据进行分析,也适用网络通信程序的开发和调试。 注意,如果十六...
可以把十六进制转换成中文、文本、字符串,也可以把中文、文本、字符串转换成十六进制,同时生成十六进制与字符的对照表,主要用于对抓包的十六进制数据进行分析,也适用网络通信程序的开发和调试。 注意,如果十六...
HxD是一款简单的十六进制编码处理软件。通过HxD可以快速打开大容量的文件,还能够进行基本的十六进制编码处理操作。HxD Hex Editor软件支持编辑、剪切、复制、粘贴、插入或删除文件数据等功能,满足用户的多种编辑...
在公司做项目的时候发现用Netty进行TCP/IP通信的Netty客户端接收到的数据进制乱码,经过摸索,终于成功解决了这个鸡肋的问题
java代码,从16进制数直接转化成字符串(包括中文)简单好用
解决ultraeditor打开中文文件出现乱码的情况
废话不读说了,直接给大家贴代码了,代码附有...* ------------解决中文乱码问题--------- */ public class StringToSixthUtils { private static String hexString = 0123456789abcdef; /* * 将字符串编码成16进制数
010 Editor破解版是一款功能强大的代码编辑器,使用可帮助用户轻松编辑任何文件、驱动器或进程的...二进制文件是计算机可读但不可读的文件(如果在文本编辑器中打开,二进制文件将显示为乱码)。十六进制编辑器是一个
C#从16进制转换成汉字 C#从16进制转换成汉字
Redis在使用命令行操作时,如果查看内容中包含中文,会显示16进制的字符串”\xe4\xb8\xad\xe5\x9b\xbd” 127.0.0.1:6379> set k1 '中国' OK 127.0.0.1:6379> get k1 "\xe4\xb8\xad\xe5\x9b\xbd" 如果想要看到的中文...
二进制文件是计算机可读但不可读的文件(如果在文本编辑器中打开,二进制文件将显示为乱码)。 010 Editor十六进制编辑器是一个程序,允许您查看和编辑二进制文件和高级十六进制编辑器的各个字节,包括010编辑器还...
Qt字符转换,串口接收数据转为中文显示可用。Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值
文件下载,二进制流转换成文件 解决中文名乱码的问题
16进制数据一般是:text=0x340xb5…,就是0x开头,之后是两个数字十六进制数。 如果直接使用sscanf(text,”0x”,&num),会把连续的数字读进去直到遇到’x’. 如使用sscanf读取text第一个读到的十六进制数是0x340,...
EL中文显示乱码的解决办法 EL中文乱码 EL中文显示乱码
tail一个文件或cat 一个文件,是否会出现乱码取决于你的目标文件,如果目标文件中有十六进制值为OE的字符(即ASCII值为14的ASCII字符,数字1的ASCII值为49)就会出现乱码, 在一个正常的终端,运行 echo -e '\xe' ...
用qt实现的界面程序,实现串口和UDP的字符串和16进制的收发以及qt界面美化的方法。 更详细的介绍及界面展示,请参考笔者博客,在CSDN上搜索“QT学习过程及简单串口和UDP通信demo开发过程及代码分享”。