Как изменить кодировку символов соединения PDO / SQLite в PHP? - PullRequest
9 голосов
/ 04 ноября 2008

У меня небольшая проблема с приложением php-gtk, которое продолжает работать со строками не-utf8, я обнаружил, что проблема в соединении с базой данных, даже если предполагается, что база данных находится в UTF-8.

Я попытался с помощью «SET CHARACTER SET utf8» (путь MySQL) и «SET NAMES UTF8», и ничего не произошло (нет никакой информации об этих командах в « Язык запросов» SQLite "страница, так что я не удивлен этим).

PD: Возможно, соединение уже в UTF-8, а данные - нет, но если есть способ изменить кодировку соединения, этот вопрос все равно будет полезен.

1 Ответ

9 голосов
/ 04 ноября 2008

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

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

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