GOOGLE ADS

понедельник, 9 мая 2022 г.

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

У меня небольшая проблема с приложением 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

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...