gbk 根本就无法直接编码阿拉伯文字
https://html.spec.whatwg.org/multipage/forms.html#url-encoded-form-data按照标准
在 gbk 编码下提交时
浏览器应该先把“تانزھ”转换成“&#数值;”的形式
然后再编码成 %26%231578%3B%26%231575%3B%26%231606%3B%26%231586%3B%26%231726%3B
ت
=> 0x062A(1578) => ت => %26%231578%3B
但是
这些字符却可以在 gb18030 下进行编码
也就是你看到的 %811%842%811%839%811%870%811%850%811%930
或者更确切地表示为 %81%31%84%32%81%31%83%39%81%31%87%30%81%31%85%30%81%31%93%30
每个字符对应 4 个字节,比如
ت
=> 0x062A => \x81\x31\x84\x32 => %81%31%84%32 => %811%842
至于 python 2
urllib.quote 其实只接受字节串
尝试以 gbk 编码将报 UnicodeEncodeError 错误
只能编码为 gb18030
正确的写法应当是
urllib.quote(u'\u062A\u0627\u0646\u0632\u06BE'.encode('gb18030'))
urllib.quote(u'تانزھ'.encode('gb18030')) # 如果你的文件编码为 utf-8
urllib.quote('تانزھ'.decode('utf-8').encode('gb18030')) # 如果你的文件编码为 utf-8
urllib.quote('تانزھ') # 如果你的文件编码为 gb18030
所以你是怎么在表单页编码为 gbk 时观察到编码为 gb18030 才会有的编码结果的 -_-|||