Јуче ми се десило да су ми отказали сви стари скриптови са поруком „Error establishing a database connection“, док је управо инсталисани WordPress радио без проблема. Проверио сам конфигурационе фајлове појединих скриптова, сви су били нетакнути и са исправним подешавањима за базу. phpMyAdmin ради без проблема, значи да је MySQL сервер оперативан.

Углавном, после сат времена су ми у хостингу средили приступе бази из скриптова, али је „пукао“ mojblog.sajbernetiks.rs због промене кодног распореда у бази, пошто су га, приликом интервенције, пребацили са utf8_general_ci на latin1_swedish_ci и онда је сајт изгледао овако:

Прилично грозно, зар не?

После претраге разних решења и „решења“ на интернету, набасао сам на овај чланак: https://stackoverflow.com/questions/40036806/php-how-to-convert-unicode-to-russian-chacrters

и ту је било РЕШЕЊЕ. Кључна наредба је:

mb_convert_encoding($s, "Windows-1252", "UTF-8");

Онда је код за тестирање решења изгледао овако (у мом омиљеном CodeIgniter-u):

$query = $this->db->query("SELECT post_content FROM wp_posts");

foreach ($query->result() as $row)
{
$post_content = $row->post_content;
echo 'Pre izmene-'.$s
;
$n = mb_convert_encoding($s, "Windows-1252", "UTF-8");
echo 'Posle izmene-'.$n;
}

Што је приказало следеће:

Тест скрипта за измену кодног распореда.

Као што се види, ово решење ради. Сва поља прво треба пребацити на utf8_general_ci, мада је тренутни стандард utf8mb4_unicode_ci .

Остало је само да одрадим ту конверзију у свим табелама у којима се догодио, на први поглед, катастрофалан прелазак на други кодни распоред. Крајњи резултат је дат на слици доле, а можете и само да посетите сајт http://mojblog.sajbernetiks.rs/, биће ми драго:

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *