wjh
wjh

Reputation: 597

Django model utf8 with legacy database

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

Answers (2)

Krishna Balan
Krishna Balan

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

catherine
catherine

Reputation: 22808

u = unicode(name,'latin-1')
print u.encode('utf-8')

Upvotes: 1

Related Questions