Reputation: 597
I have a legacy database with latin1 encoding. I do not have access to change it to utf8. When I read values from the model, I am getting garbled text.
I tried to use name.decode('utf-8') but it is throwing a unicode error:
'ascii' codec can't encode characters in position 4-12: ordinal not in range(128)
name.encode('utf-8') doesnt work either.
Upvotes: 3
Views: 3621
Reputation: 256
If you have access to your 'settings.py' file, then you can change the settings saying that your database is using 'latin1'.
Following is the example of the 'DATABASES' configuration in 'settings.py' file.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_db',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
'OPTIONS': {
'charset': 'latin1',
'use_unicode': True, },
},
}
I had similar issue earlier, checkout the link here Django database charset issue
Upvotes: 3