Преобразование кодировки с PHP - PullRequest
0 голосов
/ 19 марта 2011

Пытаясь выполнить преобразование Latin1 в UTF-8 для WordPress, не повезло с учебником, размещенным в Кодексе. Я придумал это, чтобы проверить кодировку и конвертировать.

while($row = mysql_fetch_assoc($sql)) {
if(!mb_check_encoding($row['post_content'], 'UTF-8')) {

    $row = mb_convert_encoding($row['post_content'], 'ISO-8859-1', 'UTF-8');

    if(!mb_check_encoding($row['post_content'], 'UTF-8')) {
        echo 'Can\'t Be Converted<br/>';    
    }
    else {
        echo '<br/>'.$row.'<br/><br/>';
    }
}
else {
    echo 'UTF-8<br/>';
}
}

Это работает ... Сорта. Я не получаю никаких строк, которые не могут быть преобразованы, но я заметил, что Panamâ становится Panam

Я пропускаю шаг? Или я все делаю неправильно?

UPDATE

Данные, хранящиеся в базе данных, повреждены (символы Ã ¡сохраняются). Так что это больше похоже на поиск и замену работы, чем на конверсию. Пока что я не нашел отличных решений для этого в автоматическом режиме.

Ответы [ 2 ]

0 голосов
/ 19 марта 2011

Обратитесь к документации PHP для mb_convert_encoding:

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

Ваш код пытается преобразовать в ISO-8859-1 из UTF-8!

0 голосов
/ 19 марта 2011

Это поможет вам.http://php.net/manual/en/book.iconv.php

Более того, вы можете установить ваше подключение mysql к utf8 следующим образом:

mysql_set_charset  ('utf8',$this->getConnection());  

$ this-> getConnection в моем коде возвращает переменную, которая была возвращена

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