У меня есть китайская строка «普 派», которую я хочу передать с клиента на веб-сервер, используя HTTP POST-запрос. На стороне клиента, я использую следующий код JQuery:Ошибка конверсии между JSON для китайских иероглифов
$.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_var
) грязен. Переменная post_data
типа bytes
: b '"\ xc3 \ xa6 \ xe2 \ x84 \ xa2 \ xc2 \ xae \ xc3 \ xa6 \ xc2 \ xb4 \ xc2 \ xbe"', но для правильного преобразования это должно быть b '' \ u666e \ u6d3e "'(получена json.dumps("普派").encode()
). Не могли бы вы помочь мне решить эту проблему? Большое спасибо.
Я сохраняю файл html как кодировку utf-8 и проверяю его с помощью команды -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? как это проверить? – user2384994