2014-05-14 2 views
0

내 C 프로그램에서 sqlite3_bind_text16()을 사용하여 sqlite 행의 특정 텍스트 열 (WVARCHAR)을 업데이트하려고하지만 불행히도 L"e"과 같은 ASCII 인코딩 문자 만 포함 된 문자열은 올바르게 업데이트되지만 유니 코드 문자를 포함하는 다른 문자열은 L"é"은 비 ASCII 문자가 올바르게 저장되지 않아서 업데이트됩니다. 여기에 내가 기능을 사용하는 방법을 예입니다SQLite3 : 비 ASCII 문자가 올바르게 업데이트되지 않았습니까?

sqlite3_bind_text16(stmt, 1, L"e", -1, SQLITE_STATIC); //e is stored correctly 
sqlite3_bind_text16(stmt, 2, L"é", -1, SQLITE_STATIC); //é not stored correctly: modified 

내가 시험을 나의 프로그램의 SQLite는 데이터베이스 파일에 대한 SQLite는 쉘을 사용하여 선택 명령을 수행하여.

어떻게 해결할 수 있습니까?

+0

비 ASCII 문자는 어떻게됩니까? –

+0

http://picsee.net/upload/2014-05-14/42d9402a739d.png – user3457200

+0

Windows 명령 셸은 SQLite의 UTF-8 문자를 올바르게 처리하지 않습니다. 다른 프로그램을 사용하여 데이터베이스 내용을 표시하거나'SELECT hex (MyColumn) FROM taxdeclaration; '의 출력을 표시하십시오. –

답변

0

문제 이전 업데이트로 데이터베이스에 PRAGMA을 다음

PRAGMA encoding = 'utf8';

이 올바르게 비 ASCII 문자를 업데이트 sqlite가를 확인해야합니다.

+0

데이터베이스를 만든 후에 데이터베이스 인코딩을 변경할 수 없으며이 인코딩 설정은 API에 사용 된 문자열의 인코딩을 변경하지 않습니다. –

관련 문제