2009-01-31 1 views
1

.NET 2.0을 사용하여 WinForms 응용 프로그램을 개발 중이며 SQLite를 DB 솔루션으로 사용하려고합니다. 내 주요 문제는 데이터가 비 영어 언어 (제 경우 그리스어)에있을 때 WinForm의 DB에서 데이터를 보는 데 문제가 있다는 것입니다.SQLite 및 WinForms 2.0을 사용한 인코딩 문제 C#

데이터베이스 관리를 위해 나는 그리스어로 모든 데이터를 반환하는 데 문제가없는 SQLite administrator을 사용합니다. 그러나 DataGridView에서 데이터를 폼에로드 할 때 두려운 "누락 된 문자"사각형 기호가 표시됩니다.

데이터베이스와 통신하려면 System.Data.SQLite 솔루션을 사용하십시오.

내가 여기에 놓친 거지 뭔가가 있나요? 나는 데이터베이스의 기본 데이터 정렬을 설정 보였지만, SQLite는이

감사에게

P.S.을 SQL 서버 (예를 들어, COLLATE Greek_CI_AS)와 같은 데이터 정렬 값을 지원하지 않기 때문에, 아무것도 들고 오지 않았다 SQLite 3 및 System.Data.SQLite.dll 1.0.60을 사용하고 있습니다. 테스트 용 연결 문자열은 다음과 같습니다. Data Source=test.db;UseUTF8Encoding=True;

답변

2

데이터베이스에서 문자열이나 바이트 배열을 검색하고 있습니까? 내부적으로 SQLite는 sqlite3_column_text를 사용하여 문자열 값을 얻을 때 반환하는 UTF-8 또는 UTF-16 문자열 (데이터베이스에 문자열을 삽입하는 데 사용 된 메서드에 따라 다름)을 사용합니다.

반면에 blob을 요청하면 응용 프로그램이 기대하는 문자 인코딩과 일치하지 않는 기본 바이트가 반환됩니다.

ADO 공급자가 이러한 기본 작업에 매핑되는 방법을 잘 모르겠지만 텍스트가 유니 코드로 반환되지 않거나 응용 프로그램이 다르게 처리한다면 그럴 수 있습니다. 문제가있는 곳에 있어야합니다.

http://www.sqlite.org/c3ref/column_blob.html

편집 : 내가 생각하는 동안는 어떤 차이가 있는지, SQLiteman에서 데이터베이스를 열어보십시오.

1

이 문제는 SQLite Administrator에 의해 발생한 것일 수 있습니다. Mike의 조언을 따라 DB를 테스트하기 위해 SQLiteman을 사용했습니다. SQLite Administrator로 삽입 한 샘플 데이터를 쿼리했을 때, 코드와 동일한 "누락 된 문자"기호가 나타납니다.

그런 다음 나는 그 반대를 시도했다. 나는 SQLiteman을 사용하여 DB를 만들고, 일부 행을 추가했으며, 코드는 올바른 형식으로 결과를 얻었다. 그럼 내 애플 리케이션과 라인을 추가하고 결과가 다시 한 번 적절했습니다.

감사합니다. 마이크, 당신의 제안은 저를 도왔습니다.

또한, 나는 결코 SQLite 관리자가 좋은 응용 프로그램이 아니라는 것을 암시하고 싶습니다. 그러나 특정 사례에 문제가있을 수 있습니다. 다시 감사합니다.