Jquery 中文字符的JSON之间的转换错误
我有一根中国线“普派" 我希望使用HTTP POST请求将其从客户端传输到web服务器。在客户端,我使用以下jquery代码:Jquery 中文字符的JSON之间的转换错误,jquery,python-3.x,json,Jquery,Python 3.x,Json,我有一根中国线“普派" 我希望使用HTTP POST请求将其从客户端传输到web服务器。在客户端,我使用以下jquery代码: $.ajax({ url: 'http://127.0.0.1:8000/detect/word', type: 'POST', data: JSON.stringify('普派'), success: function(msg) { alert(msg); } }); 在服务器端,我使用python 3.3:
$.ajax({
url: 'http://127.0.0.1:8000/detect/word',
type: 'POST',
data: JSON.stringify('普派'),
success: function(msg) {
alert(msg);
}
});
在服务器端,我使用python 3.3:
class DictRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
post_data = self.rfile.read(int(self.headers['Content-Length']))
post_var = json.loads(post_data.decode())
但是结果(post\u var
)是混乱的。类型为bytes
的变量post\u data
是:
b''\xc3\xa6\xe2\x84\xa2\xc2\xae\xc3\xa6\xc2\xb4\xc2\xbe'',但要正确转换,它应该是b'\u666e\u6d3e''(通过
json.dumps('普派“”.encode()
)。您能帮我解决这个问题吗?非常感谢。JSON.stringify(“”)的结果普派')代码>取决于源文件的编码。请记住,引号之间的内容实际上只是一堆字节,只有编辑器(或浏览器)将其显示为普派'.如果浏览器正确地检测到您的源代码,那么这并不重要,但如果不正确,那么您最终将成为垃圾。
因此,请确保提供正确的文件编码(最好是utf-8) 要独立于这种依赖于浏览器的解释,请尝试将其更改为
JSON.stringify(“\u666e\u6d3e”)
json标准并不要求编码时必须用teir unicode转义序列替换unicode字符。
它只是定义了编码,并允许json字符串中包含“任何unicode字符”,因此如果将给定字符编码为utf-8,则json.stringify
的结果不会出错。任何一个都可以,因此您应该在服务器端看到
b''\xe6\x99\xae\xe6\xb4\xbe'
我将html文件另存为utf-8编码,并使用file-bi命令检查它,我还添加了“contentType:”text/plain;charset=utf-8”,“在$.ajax函数调用中,但同样的问题仍然存在——我总是得到错误的\xc3\xa6\xe2\x84\xa2\xc2\xae\xc3\xa6\xc2\xb4\xc2\xbe。我不能使用JSON.stringify(“\u666e\u6d3e”),因为jquery不知道如何转换普派 到\u666e\u6d3e(我是用python得到的)或\xe6\x99\xae\xe6\xb4\xbe。问题是,编码JSON.stringify用于转换什么普派 到\xc3\xa6\xe2\x84\xa2\xc2\xae\xc3\xa6\xc2\xb4\xc2\xbe?如何检查?