2016-12-14 4 views
2

SQLite 데이터베이스에 쓰는 오래된 MFC C++ 응용 프로그램과 데이터베이스에서 읽는 C# 응용 프로그램이 있습니다.SQLite 데이터베이스의 비 유니 코드, 영어 이외의 텍스트 읽기

C++ 응용 프로그램은 러시아어 Windows 컴퓨터에서 데이터베이스에 "키릴 문자"(키릴 문자)를 씁니다.

동일한 C++ 응용 프로그램이 서유럽 (라틴) Windows 컴퓨터에서 읽을 때 "øàã ïîòîêàà ààáîòû"(라틴어 표현)로 읽습니다.

C# 응용 프로그램에서는이 값을 읽으면 " "(유니 코드 표현)로 읽습니다.

이러한 응용 프로그램 중 데이터베이스의 특정 인코딩 유형은 없습니다. C#에서 원본 텍스트를 읽고 싶습니다.

텍스트를 읽을 때 인코딩 유형을 지정하는 적절한 방법을 찾을 수 없습니다.

Data Source=c:\mydb.db;Version=3;UTF8Encoding=True;과 같은 연결 문자열을 시도했지만 지금까지는 행운을 찾지 못했습니다.

또한 " from"에서 바이트 배열을 가져 와서 키릴 문자로 변환하려고했지만 실패했습니다.

누구나 SQLite 데이터베이스에서 원래 러시아어 텍스트를 읽는 방법을 알고 있습니까?

답변

4

SQLite C API의 모든 일반 함수는 UTF-8을 사용합니다. C# SQLite 드라이버는 UTF-8과 C# 문자열 인코딩을 자동으로 변환합니다.

C# 프로그램에서 올바른 데이터를 얻지 못하면 C++ 응용 프로그램이 실제로 UTF-8이 아닐 가능성이 있습니다. 이것은 C++ 응용 프로그램이 다른 코드 페이지로 다른 결과를 제공한다는 사실에 의해 확인됩니다.

가능하면 C++ 응용 프로그램을 수정하거나 데이터베이스의 데이터를 원래 인코딩에서 UTF-8로 변환하십시오. 최후의 수단으로 C# 응용 프로그램을 변경하여 모든 문자열을 모양으로 읽고 원래 인코딩에서 UTF-8로 변환 할 수 있습니다. (어쨌든 원래 인코딩이 무엇인지 알아야합니다.)

+0

내가 말했듯이 그것은 최후의 수단이 될 것입니다. 우선 올바른 인코딩을 사용해야합니다. –

관련 문제