質問: cursor.execute("select speek from pepad").fetchall() self.logger.info(result) ``` 出力結果 [INFO ] behavior.box :onInput_onStart:25 _Behavior__lastUploadedChoregrapheBehavior945602960:/sqlite_4: [(u'\u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306f\u30da\u30c3\u30d1\u30fc\u3067\u3059',) speek カラムはテキスト型でエンコード指定はutf-8です。 Firefoxのsqliteプラグインから中を見ると日本語で格納されます。
回答: 出力は本当に`[INFO ] behavior.box :onInput_onStart:25 _Behavior__lastUploadedChoregrapheBehavior945602960:/sqlite_4: [(u'\u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306f\u30da\u30c3\u30d1\u30fc\u3067\u3059',)`であっていますか? (決して疑っているわけではありませんが、どうやったらこの出力になるかがわからないんです。。(^ ^;すみません。。) 一度試しに`self.logger.info(result[0][0])`と`print(result[0][0])`を実行してその結果も載せていただけるとありがたいです。m(_ _)m 以下は出力が`[INFO ] behavior.box :onInput_onStart:25 _Behavior__lastUploadedChoregrapheBehavior945602960:/sqlite_4: [("u'\\u3053\\u3093\\u306b\\u3061\\u306f\\u3001\\u79c1\\u306f\\u30da\\u30c3\\u30d1\\u30fc\\u3067\\u3059'",)]`であったと仮定して書いています。(`u'\`の前と最後の`'`の後に`"`を入れて考えています。またこれはこちらの都合※なのですが、`\u`ではなく`\\u`としています。) ※こちらの都合 `print("u'\\u3053\\u3093\\u306b\\u3061\\u306f\\u3001\\u79c1\\u306f\\u30da\\u30c3\\u30d1\\u30fc\\u3067\\u3059'")`の出力結果が`u'\u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306f\u30da\u30c3\u30d1\u30fc\u3067\u3059'`であるため、当初これを想定してコードを書きました。 ``` import os.path,sqlite3 dbfile ="test.sqlite" connect = sqlite3.connect(dbfile) cursor = connect.cursor() result = cursor.execute("select speek from pepad").fetchall() # ↓追加してください。 result = result[0][0].replace("u","",1).replace("\'","") jap_result = "" for m in re.finditer("\\\\u....",result): jap_result += chr(int(m.group()[2:],16)) result = jap_result # ↑追加してください。 self.logger.info(result) ``` ちょっと自信ないですけどこれでどうでしょうか? 挙げていただいたコードは`class`の内部ですね?妙なインデントがありましたし、`self`がありましたので。 見やすさのためにインデントは消しましたので、実際にコードに組み込む際は適切にインデントしてください。m(_ _)m 追記 出力回りは私も実は苦手なんですよね(なぜ回答したって感じですね苦笑) そもそも日本語が出力できる環境ではないのではないでしょうか? 確認してみてください。m(_ _)m * `print("こんにちは、私はペッパーです")`を実行してみる * `UnicodeEncodeError`と言われたら下記URLにしたがい設定を確認してみる Python 3で日本語をprintする際のUnicodeEncodeErrorはLANGに気をつける 一か八かですけど、 ``` import codecs byt = u'\u3053\u3093\u306b\u3061\u306f\u3001\u79c1\u306f\u30da\u30c3\u30d1\u30fc\u3067\u3059'.encode('utf-8') jap_str = codecs.decode(byt,encoding='utf-8') print(byt) print(jap_str) ``` これがうまく行くかも試していただけると幸いです。 出力(`print()`)に問題がある場合はこれも`UnicodeEncodeError`になるはずです。 色々とお願いしてすみません...m(_ _)m