2015-11-01 2 views
0

У меня возникли проблемы с utf8_encode() функция.utf8_encode() на самом деле не работает

Вот пример

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <?php 
    header("Content-Type: text/html; charset=utf-8"); 
    $str = "Şşİğ"; 
    echo utf8_encode($str); 
    ?> 

выход я вижу

SSIG (третий один является столицей я)

, если я не использую utf8_encode() это то, что я получаю

Å

Таким образом, это не работает на некоторых языках. Это только делает его немного понятным, а не правильным.

Благодаря

+0

Возможно, дополнительный байт, который не может быть преобразован. В этом случае utf-8 просто игнорирует его. Проверьте документы в этой функции, вы должны быть в состоянии настроить то, что игнорируется или принудительно, когда что-то не может быть преобразовано в utf8 – Rooster

+0

Какова кодировка файла PHP? –

+0

@ KarolyHorvath также UTF-8. Петух, я попробую это спасибо. –

ответ

3

Если кодирование строки является уже UTF8 (в отличие от ISO-8859-1 (5)), you need do nothing:

utf8_encode - Кодирует строку ISO-8859-1 в UTF8

на самом деле, работает utf8_encode на строку, которая уже UTF8 обязан нанести какой-то хаос.

Вы говорите, что кодировка файла UTF8, но то, что вы получаете, выглядит как ISO-8859. Поэтому я подозреваю, что у вас есть что-то, что испортило цепочку кодирования.

Проверьте Content-Type заголовок (то есть проверить, что один установить, действительно, тот, который получает отправленное), дважды проверьте кодировку файла и настройки, а также браузер (он должен быть либо UTF8 или автоопределение) ,

Кроме того, довольно странно, что вы должны получить «SsIg» - это, безусловно, не ожидаемое поведение кодировки UTF8. Почти кажется, что что-то пытается отобразить ваши символы в ASCII-набор, сопоставляя их с самым похожим символом ASCII. Поэтому я также проверю любые прокси или кеши или что-нибудь посередине, которое может манипулировать данными, отправленными вашим скриптом.

+0

Я проверил, и все кажется правильным. Странная часть, когда я использую 'mb_detect_encoding ($ str," auto ")' для переменных, которые я создал, говорит, что они уже UTF-8. Тем не менее, я вижу некоторые странные вещи. Все еще не мог понять, почему. –

+0

Хорошо, я исправил это. Я использовал EasyPhp для окон, и я пошел на переустановку.Двойной проверял все, что вы сказали, и теперь он работает. Кроме того, исправляя мою проблему, вы дали здесь довольно хорошую информацию. Огромное спасибо. –

Смежные вопросы