python(ver.3) + ajaxで日本語のパラメタをPOSTした時に、文字化けします。
送受信形式は、jsonです。
下記のコードは幾つかのサイトを参考したものですが、このままだと日本語が文字化けする様です。
何か解決策はあるでしょうか。
一応、どうにもならない時はパラメタをエンコードしようかと考えています。
python
1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4#import 5import cgitb 6import cgi 7import os 8import json 9import sys 10import io 11 12#main 13def main(): 14 15 #文字化け対策 16 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 17 18 #エラーの内容をブラウザに送信 19 cgitb.enable() 20 21 #パラメタ取得 22 data = sys.stdin.read() 23 params = json.loads(data) 24 25 # 26 para1 = params['para1'] 27 para2 = params['para2'] 28 29 #レスポンス 30 response = { "para1" : para1 31 , "para2" : para2} #文字化け 32 33 #書き込み 34 print('Content-type: text/html\nAccess-Control-Allow-Origin: *\n') 35 print("\n\n") 36 print(json.JSONEncoder().encode(response)) 37 print('\n') 38 39#main実行 40if __name__ == '__main__': 41 main() 42
javascript
1 2let ajaxPost = function(){ 3 4 $.ajax({ 5 type : "POST", 6 url : url, //sample.py 7 data : JSON.stringify({para1 : "ああああ", para2 : "いいいい"}), //object -> json 8 async : false, 9 dataType : "json", 10 success : function(data) { 11 console.log(data); 12 }, 13 error : function(XMLHttpRequest, textStatus, errorThrown) { 14 console.log("リクエスト時になんらかのエラーが発生しました\n" + url + "\n" + textStatus +":\n" + errorThrown); 15 } 16 }); 17} 18
追記
日本語をURLエンコード・でコードすれば、日本語の文字列送受信は可能でした。
あなたの回答
tips
プレビュー