I want to set my Django/mysql site to work with UTF-8. Please guide me the changes I have to make in django and mysql to make sure the following things.
User entered data in the forms will be always encoded as UTF-8
Storing the data in mysql as utf-8
Displaying utf8 encoded data in the template correctly
Also I want to know whether moving to UTF-8 encoding will remove unicode decode error like below.
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 55: ordinal not in range(128)
Many Thanks.
To change the character set encoding to UTF-8 for the database itself, type the following command at the mysql> prompt. Replace dbname with the database name: Copy ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci; To exit the mysql program, type \q at the mysql> prompt.
MySQL supports multiple Unicode character sets: utf8mb4 : A UTF-8 encoding of the Unicode character set using one to four bytes per character. utf8mb3 : A UTF-8 encoding of the Unicode character set using one to three bytes per character.
here some advices:
1) use utf8 encoding when creating database
CREATE DATABASE <dbname> CHARACTER SET utf8;
docs
2) place the following special comment in the first or second lines of your script:
# -*- coding: utf-8 -*-
nice article about python and utf8
3) Use unicode strings with u prefix in *.py files
unicodeString = u"hello Unicode world!"
4) Use follwing meta tag in section of your base template:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With