польские символы utf8 не показывают право - PullRequest
4 голосов
/ 20 июля 2010

В настоящее время мой сайт поддерживает английский, португальский, шведский и польский языки. Но по какой-то причине некоторые польские символы не отображаются правильно, например Zal�z konto, это должно выглядеть так Zalóz konto

У меня есть это

// Send the Content-type header in case the web server is setup to send something else
header('Content-type: text/html; charset=utf-8');

и внутри <head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Ответы [ 4 ]

4 голосов
/ 19 августа 2010

Вам также необходимо преобразовать вашу строку в UTF8.

utf8_encode () не проверяет, в какой кодировке была ваша строка, и иногда она дает вам испорченную строку, поэтому я создал функцию под названием Encoding:: toUTF8 (), чтобы сделать это правильно.

Вам не нужно знать, какова кодировка ваших строк.Это может быть Latin1 (iso 8859-1), Windows-1252 или UTF8, или в строке может быть их сочетание.Encoding :: toUTF8 () преобразует все в UTF8.

Я сделал это, потому что служба давала мне поток данных, которые были испорчены, смешивая эти кодировки в одной строке.

Использование:

$utf8_string = Encoding::toUTF8($mixed_string);

$latin1_string = Encoding::toLatin1($mixed_string);

Я включил еще одну функцию, Encoding :: fixUTF8 (), которая будет фиксировать каждую строку UTF8, которая выглядит искаженным продуктом после многократного кодирования в UTF8.

Использование:

$utf8_string = Encoding::fixUTF8($garbled_utf8_string);

Примеры:

echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");

выведет:

Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football

Загрузить:

http://dl.dropbox.com/u/186012/PHP/forceUTF8.zip

2 голосов
/ 21 июля 2010

если вы извлекаете данные из базы данных mysql с помощью php, вам следует использовать этот запрос, прежде чем что-либо делать.

mysql_query("SET NAMES utf8");

Таким образом, данные, полученные от БД, будут правильно закодированы, если они были правильно сохранены в нем ...

1 голос
/ 13 июня 2011

Также вы можете использовать стандарт iso-8859-1 :

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
0 голосов
/ 22 июня 2018

Я начинаю свой заголовок с:

< head>
    < meta http-equiv="Content-Language" content="pl" >
    < meta charset="UTF-8" >
    ...
< /head>
...

и все отлично работает.

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