Как изменить кодировку символов соединения PDO / SQLite в PHP?

StackOverflow https://stackoverflow.com/questions/263056

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Насколько я могу судить, 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top