2012-06-18 34 views
13

Tôi đang phát triển một ứng dụng web khá đơn giản bằng cách sử dụng Flask và MySQL.Bộ ký tự kết nối bộ pyMySQL

Tôi đang gặp khó khăn với unicode. Người dùng đôi khi dán nội dung mà họ đã sao chép từ Word và nó rơi xuống với dấu ngoặc kép thông minh cũ u'\u201c'.

Một ít điều tra cho thấy kết nối tôi có với MySQL đang sử dụng bộ ký tự Latin1 (có vẻ là mặc định).

Tôi có thể chỉ định cho nó để sử dụng unicode cho kết nối của nó như thế nào?

Tôi đang sử dụng pyMySQL, công cụ này là mục đích thay thế cho MySQLdb. MySQLdb định nghĩa một hàm set_character_set(self, charset) cho các đối tượng connection, nhưng pyMySQL không (tôi gặp lỗi nếu tôi thử).

+0

Bạn có thể thử truy vấn thô cho mọi kết nối bạn đã nêu rõ 'SET NAMES UTF8' –

Trả lời

46

Tôi đã làm việc đó bằng cách poking xung quanh trong pyMySQL source (Tôi đã thử, nhưng không thể tìm thấy đúng nơi!).

Bạn có thể xác định nó khi bạn tạo kết nối:

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

Giải Quyết vấn đề của tôi.

+2

Tôi đã cố gắng sử dụng pymysql với sqlalchemy, vì vậy sửa lỗi cho tôi là thay đổi url thành' mysql + pymysql: // user_name @ host_name/database_name? charset = utf8mb4'; câu trả lời này đã giúp rất nhiều! –

Các vấn đề liên quan