2012-11-15 5 views
2

sqlite 및 해당 텍스트 인코딩에 약간의 문제가 있습니다. 나는 문서에서 sqlite가 UTF-8 인코딩을 처리하거나 PRAGMA 인코딩 = "UTF-8"명령을 실행하여 사용할 수 있다고 읽었습니다. 데이터베이스에 폴란드어 텍스트를 저장해야합니다. 데이터베이스는 나중에 Qt와 함께 사용하게 될 것입니다. CREATE TABLE ... 및 INSERT INTO ...라는 두 개의 명령을 사용하는 스크립트가 있습니다.이 파일은 UTF-8로 인코딩되어 있습니다. 그러나 명령 줄 : sqlite3 myname.db < the_file.sql을 사용하면 데이터베이스와 테이블을 모두 만들 수 있지만 ą, ć, ¼, Ż 등 모든 폴란드 식 특정 문자는 더 간단한 ANSI로 자동 변환됩니다 문자 : a, c, z, Z 등. 명령 줄에 문제가 있다고 생각했습니다. 그래서 SQLite Manager 2009를 다운로드하고 SQLite Manager에서 전체 스크립트를 복사/붙여 넣을 때 효과가 동일하다는 것을 알았습니다. 문자는 복사/붙여 넣기 중에 자동으로 변환됩니다. SQLite는 ANSI 문자와 함께 만 사용하도록 제한됩니까?SQLite는 모든 유니 코드 문자를 ANSI로 변환합니다

+0

누군가이 질문을 반복 할 수있는 주소를 연결할 수 있으면 감사하게 생각합니다. 나는 실제로 일이 실제로 일어나는 이유를 이해하지 못합니다. – Celdor

답변

3

설정에 문제가 있으면 확실히 SQLite가 아닙니다.

몇 가지 간단한 테스트 :

리눅스 : 의사가 처방으로

$ cat > test.sql <<EOF 
DROP TABLE IF EXISTS t; 
CREATE TABLE t (str varchar(20)); 
INSERT INTO t (str) VALUES ("ą, ć, ź, Ż"); 
SELECT * FROM t; 
EOF 

$ file test.sql 
test.sql: UTF-8 Unicode text 

$ sqlite3 test.db < test.sql 
ą, ć, ź, Ż 

그래서, 그것은 작동합니다.

윈도우 :

를 사용하여 위와 같은 test.sql. 당신이 새롭게을 작성해야하는 경우, 복사 및 붙여 넣기 텍스트 다음 메모장 ++로

DROP TABLE IF EXISTS t; 
CREATE TABLE t (str varchar(20)); 
INSERT INTO t (str) VALUES ("ą, ć, ź, Ż"); 
SELECT * FROM t; 

및 인코딩에 파일로 저장 - BOM없이 UTF-8>인코딩.

sqlite3 test.db < test.sql 
─Е, ─З, ┼║, ┼╗ 

소리가 나쁩니다. 그러나, 이것은 버그가있는 Windows 콘솔입니다! 대신 파일에 출력을 저장 :

sqlite3 test.db <test.sql> out.txt 

++ 메모장에서 열기 out.txt은 - 멋지다 : ą, ć, ź, Ż

편집 : 당신이 사용하는 경우 그것은뿐만 아니라 윈도우 콘솔에서 작동 chcp 65001 :

chcp 65001 
sqlite3 test.db < test.sql 
ą, ć, ź, Ż 

QED.

+1

감사합니다. 답변을 찾았습니다. OMG 2012 및 Windows 7 64 비트에서 피 묻은 어리석은 콘솔은 여전히 ​​OEM 850 코드 페이지에서 작동합니다. 얼마나 우스운, 얼마나 우스운 !!!! 대답 해줘서 고마워. 방금 전에 읽은 내용을 확인했습니다. – Celdor

+0

Visual Studio의 프로그램에서 콘솔 창으로 출력하면 똑같은 일이 발생합니다. 콘솔은 유니 코드 문자를 지원하지 않는 것 같습니다 ... ansi가 아닌 모든 문자는 '?'로 나옵니다. –

+0

chcp 65001이 Windows 10에서 작동하지 않는 것 같습니다. – matreshkin

관련 문제