请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

编码字符串中\x和%的区别?

中文字符:u"费玉清+-+夏之旅"

python   转码           u"费玉清+-+夏之旅".encode('utf8'):'

\xe8\xb4\xb9\xe7\x8e\x89\xe6\xb8\x85+-+\xe5\xa4\x8f\xe4\xb9\x8b\xe6\x97\x85'

javascript转码          encodeURI("费玉清+-+夏之旅")

"%E8%B4%B9%E7%8E%89%E6%B8%85+-+%E5%A4%8F%E4%B9%8B%E6%97%85"

======================================

只有%和\x不同,但是用下面的转码在python 中解码得不到汉字,这是为什么呢?


正在回答 回答被采纳积分+3

1回答

五羊司机 2017-12-02 00:42:37

一个汉字通过UTF-8编码为三个字节,例如‘费’的UTF-8编码为E8B4B9,其中E8、B4、B9分别代表一个字节的数据,它们都是用十六进制表示的(E8,即0xE8,转换为十进制为232)

在很多语言的字符串中'\'都是转义字符,python字符串中的'\x'表示后面的两个字符为十六进制,例如'\xe8'表示十六进制的E8,从而与字符串'e8'区分开来

在URL的规范中用%号表示转码,即%后面的两个字符为十六进制,JS的encodeURI编码也使用这种方式(大概是因为在URL中经常出现'\'符号,如果再用'\x'表示转码容易造成混淆。)

可以理解为在不同的语言或者场景中对编码使用了不同的标识符而已,你把"%E8%B4%B9"作为字符串输入给python,在字符串中'%'并不是转义字符,python只会把它当成一个普通的字符处理

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信