2012-04-08 33 views
5

Tôi muốn đặt trang web Django/mysql của mình hoạt động với UTF-8. Xin vui lòng hướng dẫn cho tôi những thay đổi tôi phải thực hiện trong django và mysql để đảm bảo những điều sau đây.cách đặt django và mysql hoạt động với UTF-8

  1. được người dùng nhập dữ liệu trong các hình thức sẽ được luôn luôn được mã hóa theo UTF-8

  2. Lưu trữ dữ liệu trong mysql như utf8

  3. Hiển thị dữ liệu utf8 mã hóa trong các mẫu một cách chính xác

  4. Ngoài ra tôi muốn biết việc chuyển sang mã hóa UTF-8 sẽ xóa lỗi giải mã unicode như dưới đây.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 55: ordinal not in range(128)

Cảm ơn nhiều.

Trả lời

22

đây một số lời khuyên:

1) sử dụng mã hóa utf8 khi tạo cơ sở dữ liệu

CREATE DATABASE <dbname> CHARACTER SET utf8; 

docs

2) đặt nhận xét đặc biệt sau đây trong dòng đầu tiên hoặc thứ hai của kịch bản của bạn:

# -*- coding: utf-8 -*- 

nice article about python and utf8

3) Sử dụng chuỗi unicode với u tiền tố trong file * .py

unicodeString = u"hello Unicode world!" 

4) Sử dụng follwing thẻ meta trong phần của mẫu cơ sở của bạn:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
+0

Làm thế nào tôi có thể thay đổi cơ sở dữ liệu hiện tại của tôi để hỗ trợ UTF-8. là nó đủ để thêm # - * - mã hóa: utf-8 - * trong settings.py hoặc trong mọi tập tin python? – shiva

+0

bạn nên thêm '# - * - mã hóa: utf-8 - * -' vào mọi tệp nơi bạn sử dụng ký hiệu unicode. liên kết này http://www.devcha.com/2008/03/convert-existing-mysql-database-from.html có thể giúp bạn chuyển đổi các bảng cơ sở dữ liệu hiện có của bạn, nhưng "luôn sao lưu" –

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