2 Stimmen

Wie kann ich Django mit einer veralteten Postgresql-Datenbank verwenden, deren Daten in LATIN1 kodiert sind?

Django scheint seine Datenbank in UTF-8 kodiert haben zu wollen, aber unsere Legacy-Datenbank ist in LATIN1 kodiert, was Legacy-Systeme erfordern. Ist es möglich/durchführbar, Django's db-Zugriff Zeug zu haken, um zwischen UTF-8 und LATIN1 zu übersetzen, wenn Lesen/Schreiben von/zu der Datenbank? Gibt es eine bessere Lösung (die keine Konvertierung der Datenbank erfordert)?

4voto

Magnus Hagander Punkte 22152

PostgreSQL wird es für Sie übersetzen, wenn Sie client_encoding auf UTF8 setzen, solange Ihre Datenbank in LATIN1 (und nicht in SQLASCII) ist. Sie können entweder django einen SET client_encoding='UTF8' Befehl senden lassen, oder Sie können die Voreinstellung in postgresql.conf ändern.

0voto

meder omuraliev Punkte 177513

Ich schlage vor, die Sql-Datei zu löschen und mit iconv um alles in UTF-8 zu konvertieren.

Sie können etwas Ähnliches wie dieses verwenden, das ich für kyrillisches (russisches) Latin1 zu UTF-8 verwendet habe:

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X