2012-06-18 7 views
13

私はFlaskとMySQLを使用してかなり簡単なWebアプリケーションを開発しています。pyMySQL接続文字セット

私はユニコードに苦しんでいます。ユーザーはWordからコピーしたものを貼り付けることがあり、古いスマート引用符u'\u201c'で転倒します。

少しの調査では、MySQLに接続するにはLatin1文字セット(デフォルトのようです)を使用していることがわかります。

ユニコードを使用して接続する方法を指定するにはどうすればよいですか?

私はPyMySQLを使用しています。これは、MySQLdbのドロップイン置換を目的としています。 MySQLdbはオブジェクトに対してset_character_set(self, charset)関数を定義しますが、pyMySQLは(私が試してもエラーになります)。

+0

あなたは 'SET NAMES UTF8'と書いてあるすべての接続に対して生のクエリを試すことができます –

答えて

46

私はpyMySQL source(私は試してみましたが、適切な場所を見つけることができませんでした!

接続を作成するとき、あなたはそれを指定することができます。

conn = pymysql.connect(host='localhost', 
         user='username', 
         passwd='password', 
         db='database', 
         charset='utf8') 

は私の問題を解決しました。

+2

私はsqlalchemyでpymysqlを使ってみようとしていましたので、私の修正はURLをmysql + pymysql:// user_name @ host_name/database_name?charset = utf8mb4';この回答は多くの助けになりました! –