Могу ли я конвертировать свою базу данных / скрипт в UTF-8?
Как я могу преобразовать базу данных для поддержки UTF-8 и преобразовать ее старые данные из какой бы то ни было кодировки в UTF-8?
Дополнительная информация: я использую сервер, на котором много веб-сайтов, и на одном из них работает WHMCS (PHP-скрипт для управления хостинг-клиентами). У WHMCS есть приложение для iPhone, где я могу просматривать его через iPhone, проблема в том, что это приложение будет работать, только если все на моем сайте в кодировке UTF-8.
Я использовал Windows-1256 в качестве кодировки в настройках моего скрипта, и я пытался изменить это в какой-то момент времени на UTF-8, а затем изменил его обратно на Windows-1256.
Итак, некоторые данные в базе данных вставлены с использованием стандартов UTF, и большинство из них - Windows-1256.
Если кто-то может очистить картину для меня, нужно ли конвертировать каждую базу данных на сервере или только одну БД? что я должен изменить?
Если бы мне пришлось сделать это вручную, я сделаю это, но мне нужен совет специалиста.
3 ответа
Кодировка базы данных обычно определяется при создании базы данных (конечно, для Postgres). Одним из способов решения этой проблемы является экспорт, создание новой БД и повторный импорт. Этой ссылки может быть достаточно.
Однако кодировка приложения может отличаться от базы данных. Это означает, что приложение отправляет UTF-8, и когда оно читает DB, оно преобразует кодировку DB в UTF-8. Обычно это делается при подключении к базе данных ( см. Эту функцию PHP).
Поэтому, если у вас есть доступ к исходному коду (должен иметь место), найдите, где приложение устанавливает соединение, и установите кодировку для вашей базы кода БД. Затем найдите, где приложение или Apache установили выходную кодировку и установите его в UTF-8. Это должно сделать свое дело.
Создайте файл базы данных и преобразуйте его в UTF-8 с помощью следующей команды:
iconv -f WINDOWS-1251 -t UTF-8 $ yourfilename.icv> $ file
Поскольку WHMCS является коммерческим приложением, вам следует обратиться к поставщику за поддержкой, чтобы узнать, как преобразовать содержимое БД из существующей кодировки в UTF-8, особенно потому, что не все приложения хорошо работают с данными UTF-8 (сортировка / сортировка и поиск часто пострадавших). Для MySQL и CentOS может потребоваться некоторая настройка, в то время как PHP, вероятно, не потребуется, поскольку он не поддерживает UTF-8 напрямую, хотя приложения PHP могут использовать UTF-8.
Преобразование существующего приложения в UTF-8 не является тривиальным упражнением, хотя это должно быть возможно при некоторой поддержке.
Там может быть более простой вариант, например, написание фильтра для использования только тогда, когда iPhone использует страницу. Если вы можете гарантировать, что нигде в пользовательском интерфейсе приложения или базе данных нет 8-битных символов, то вы можете просто установить кодировку UTF-8 на выходе, но это может быть рискованно.