質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

7456閲覧

pythonでpost通信のデータが日本語にできずに困っている。

meJ15

総合スコア55

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1グッド

1クリップ

投稿2018/12/28 03:33

前提・実現したいこと

chromeで入力した3つの日本語をpythonでバイト型から日本語に変換できずに困っています。
参考ページ
「Unicodeエスケープされた文字列を通常の文字列に変換」
でできると思っていましたがうまく動きません。

![イメージ説明]

この画像のようになってしまいます。
html側では「あいう」という文字をconsole.logで確認できています。

これをPOSTメソッドで送るときにバイト型に変換されて、それをpython側で上手く日本語化できていません。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

js

1$("#submit").click(function(){ 2 var val1 = $('#my-form [name=name1]').val(); 3 console.log(val1); 4 var val2 = $('#my-form [name=name2]').val(); 5 console.log(val2); 6 var val3 = $('#my-form [name=name3]').val(); 7 console.log(val3); 8 event.preventDefault(); 9 10//送る文字列定義 11 var kei = val1 +","+ val2 +","+ val3; 12 console.log(kei); 13 var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }}; 14 $.ajax({ 15 type: "POST", 16 url: $SCRIPT_ROOT + "/predict/", 17 data:kei , 18 19 success: function(data){ 20 $('#result').text(' 推測結果: '+data); 21 }, 22 error: function(data){ 23 $('#result').text('データ不足です'); 24 } 25 }); 26});

python

1@app.route('/predict/',methods=['GET','POST']) 2def predict(): 3 #print((request.get_data()).decode('utf-8')) 4 #一次元の配列 5 label = (request.get_data()).decode('utf-8') 6 lablel = label.encode().decode('unicode-escape') 7 shape = str(type(label)) 8 percent = 1 9 percent = round(float(percent)*100,1) 10 percent = str(percent) 11 return json.dumps({ 12 "label":label, 13 "shape":shape, 14 "percent":percent+"%" 15 }) 16 17

試したこと

python側を下のようにすると
label = (request.get_data()).decode('unicode-escape')

label:
\u00e3\u0081\u0082,\u00e3\u0081\u0084,\u00e3\u0081\u0086",
となります。

yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2018/12/28 09:30

lablel となっているのは typo ですか?
guest

回答1

0

ベストアンサー

提示コードでの動作は未検証ですが、json.dumpsする場合、ensure_ascii=Falseを指定しないと日本語が文字化けしますので指定してみてください。
また、lablel = label.encode().decode('unicode-escape')行は不要です。
参考:Flask で Restful API を作る - jsonify で日本語が文字化けする時の解決方法

以下検証コードです。

Python

1from flask import Flask, request 2app = Flask(__name__) 3 4import json 5 6@app.route('/') 7def hello_world(): 8 # ブラウザ上では「["abc","あいう"」」と表示される 9 # 未指定だと「["abc", "\u3042\u3044\u3046"]」と表示される 10 ret = json.dumps(['abc','あいう'], ensure_ascii=False) 11 return ret 12 13if __name__ == '__main__': 14 app.run(debug=True)

投稿2018/12/28 19:02

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問