PHP: преобразование из UTF-8 HTML - PullRequest
0 голосов
/ 07 августа 2009

У меня есть французский сайт, который я хочу проанализировать, но у меня возникают проблемы с преобразованием (uft-8) html в latin-1.

Проблема показана в следующем тестовом примере phpunit:

class Test extends PHPUnit_Framework_TestCase {

    private static function fromHTML($str){
        return html_entity_decode($str, ENT_QUOTES, 'UTF-8');
    }

    public function test1(){

        //REMOVE THE SPACE between the '&' and 'nbsp'. SO won't
        //let me write it without the space
        $strFrom    = 'Wanted& nbsp;: les Chasseurs de Tamriel';
        $strTo  = 'Wanted : les Chasseurs de Tamriel';
        $strFrom = self::fromHTML($strFrom);
        $this->assertEquals($strTo, $strFrom);
    }

    public function test2(){
        $strFrom    = 'Remplacement d’Almalexia';
        $strTo      = 'Remplacement d’Almalexia';
        $strFrom = self::fromHTML($strFrom);
        $this->assertEquals($strTo, $strFrom);
    }

    }

test2 завершается нормально. test1, похоже, не работает, так как пробел не является правильным, поэтому при преобразовании в ascii он заканчивается как неизвестный символ ( ).

Как я могу гарантировать, что оба теста пройдут?

Ответы [ 2 ]

2 голосов
/ 07 августа 2009

test1 не ошибается, ответ правильный. Строки, которые вы сравниваете, не совпадают. «& Nbsp;» - это , а не , декодированный в пробел (0x20). Это неразрывный пробел и поэтому он расшифровывается до 0xa0. Если вы измените значение strTo на этот символ перед двоеточием, assertEquals вернет true. Конечно, вы должны убедиться, что ваш файл сохранен в кодировке UTF-8, так же, как PERR0_HUNTER упомянул , но, увидев, что вы используете символ «’ », вы, вероятно, уже делаете это. :)

2 голосов
/ 07 августа 2009

Так же, как небольшое предложение, убедитесь, что кодировка вашего .php файла установлена ​​в utf8, вы не знаете, сколько людей пропускают это.

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