2011-01-20 3 views
2

Django는 UTF-8로 인코딩 된 데이터베이스를 원하지만 레거시 시스템에 필요한 기존 데이터베이스는 LATIN1로 인코딩됩니다. Django의 DB 액세스 자료를 후킹하여 UTF-8과 LATIN1 사이에서 데이타를 읽고 쓸 때 가능합니다. 거기에 더 나은 솔루션은 (그 DB를 변환하지 않아도됩니까?)Django를 데이터가 LATIN1로 인코딩 된 레거시 Postgresql 데이터베이스와 함께 사용하려면 어떻게해야합니까?

답변

0

SQL 파일을 덤프하고 iconv을 사용하여 모든 것을 UTF-8로 변환하는 것이 좋습니다.

는 는

당신은 내가 UTF8에 키릴 문자 (러시아어) 라틴어에 사용되는이 비슷한을 사용할 수 있습니다

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

물론 간단 할텐데, 나는이 질문을 "레거시 응용 프로그램 때문에 할 수 없다"라고 언급 한 "db 변환"을 고려할 것입니다. – psj

4

당신이 당신의 데이터베이스만큼, UTF8에 CLIENT_ENCODING 설정하면 PostgreSQL을 당신을 위해 그것을 변환합니다 LATIN1에 있습니다 (SQLASCII에는 없습니다). django가 SET client_encoding = 'UTF8'명령을 보내거나 postgresql.conf에서 기본값을 변경할 수 있습니다.

관련 문제