У меня небольшая проблема с приложением php-gtk, которое продолжает работать со строками, отличными от utf8, я обнаружил, что проблема в соединении с базой данных, даже если база данных должна быть в UTF-8.
Я пробовал с «SET CHARACTER SET utf8» (способ MySQL) и «SET NAMES UTF8», и ничего не произошло (нет никакой информации ни об одной из этих команд на странице « Язык запросов, понятный SQLite
», поэтому Я этому не удивлен).
PD: Возможно, соединение уже в UTF-8, а данные нет, но если есть способ изменить кодировку соединения, этот вопрос все равно будет полезен.
Решение проблемы
Насколько я могу судить, SQLite имеет только одну настройку для charset, которая находится на уровне каждой базы данных. Вы не можете изменить кодировку в соединении.
C API имеет два разных способа открытия соединения: UTF-8 или UTF-16. Я бы ожидал, что модуль PHP SQLite (и, следовательно, PDO) просто использует версию UTF-8. Если это правильно, я ожидаю, что соединение SQLite всегда будет UTF-8. Это означает, что вы должны вручную кодировать/декодировать строки с помощью utf8_encode / utf8_decode.
Также см:http://www.alberton.info/dbms_charset_settings_explained.html
Комментариев нет:
Отправить комментарий