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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

Q&A

解決済

1回答

3810閲覧

MySQLとPythonで日本語の文字を扱いたい

suvera

総合スコア106

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

0グッド

1クリップ

投稿2016/09/16 01:41

編集2016/09/16 03:30

###前提・実現したいこと
APIからWeb上で文字を確認できるようにしてあるのですが
文字化けしています。

それをスクリプトでprintして確認しようとすると下記エラーが出てしまいます。
日本語を最終的にはweb上から日本語を確認できるようにしたいです。
そして、今後のためにもコンソール上でも表示がされるようにしておきたいです。

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

UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-16: ordinal not in range(128)

###該当のソースコード

mysql

1insert into db.test(id, user, message) values(2, 'user1', 'こんにちは');
# -*- coding: utf-8 -*- import json import falcon import mysql.connector import sys class Message(object): def __init__(self): self.connector = self.connectDBServer('oooo', 'oooo', '000.00.0.0', 'db') def connectDBServer(self, _user, _pw, _host, _db): return mysql.connector.connect( user=_user, password=_pw, host=_host, database=_db, buffered=True, charset='utf8') def showMessage(self): cursor = self.connector.cursor() cursor.execute("SELECT * FROM messages") msg = [] for row in cursor.fetchall(): msg.append({"id:":str(row[0]), "user":str(row[1]), "message":str(row[2])}) cursor.close self.connector.commit() return msg def on_get(self, req, resp): msg = self.showMessage() print(msg) resp.body = json.dumps(msg)

###補足情報(言語/FW/ツール等のバージョンなど)
Centos7で開発しています
Python3.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python のエンコーディング方式が ASCII になっているのが原因のようです。
ためしに以下のコードを実行してみてください

python

1import sys 2print(sys.getdefaultencoding()) 3print(sys.stdout.encoding)

一般的にはこうなるはずです

>>> import sys >>> print(sys.getdefaultencoding()) utf-8 >>> print(sys.stdout.encoding) UTF-8

もしもここが ASCII になっている場合は、ロケールの設定を確認してみてください

投稿2016/09/16 04:28

miyahan

総合スコア3095

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問