Проверьте кодировку текста в SQlite - PullRequest
11 голосов
/ 26 декабря 2010

Мне снится кошмар с неевропейскими текстами в SQlite.Я думаю, проблема в том, что SQlite не кодирует текст в UTF8.Поэтому я хочу проверить кодировку и, надеюсь, изменить ее на utf8.Я закодировал CSV в UTF8 и просто импортировал его в SQlite, но текст не по-римски искажен.

Хотелось бы узнать: 1) как проверить кодировку.2) Как изменить кодировку, если она не utf8.Я читал о кодировке Pragma, но я не уверен, как это использовать.

Я использовал OpenOffice 3 для создания электронной таблицы с наполовину английским и наполовину японским текстом.Затем я сохранил файл в формате CSV, используя utf8.Эта часть, кажется, в порядке.Я также пытался сделать это с помощью Google Docs, и он работал нормально.Затем я открыл браузер SQlite и сделал импорт CSV.Текст на английском языке отображается идеально, но текст на японском языке искажен символами.Я думаю, что sqlite использует другую кодировку (возможно, utf16?).

1 Ответ

16 голосов
/ 26 декабря 2010

Вы можете проверить кодировку с помощью этой прагмы:

PRAGMA encoding; 

Вы не можете изменить кодировку для существующей базы данных. Чтобы создать новую базу данных с определенной кодировкой, откройте соединение SQLite с пустым файлом, запустите эту прагму:

PRAGMA encoding = "UTF-8"; 

И , затем создайте базу данных .

Если у вас есть база данных и вам нужна другая кодировка, вам нужно создать новую базу данных с новой кодировкой, а затем заново создать схему и импортировать все данные.

Однако, если у вас есть проблема с искаженным текстом, это почти всегда проблема с одним из используемых инструментов, а не с самим SQLite. Даже если SQLite использует другую кодировку в зависимости, единственным конечным результатом будет то, что он вызовет некоторые дополнительные вычисления, поскольку SQLite постоянно преобразует из сохраненной кодировки в кодировку, запрашиваемую API. Если вы используете что-то кроме API уровня C, то вам не нужно заботиться о кодировании - API, используемый инструментом, который вы используете, будет определять, какую кодировку следует использовать.

Многие инструменты SQLite показали проблемы с переносом текста в наш SQLite, включая оболочки командной строки. Попробуйте запустить SQLite из командной строки и скажите, чтобы он импортировал сам файл, а не через браузер SQLite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...