抛光字符utf 8不显示正确

时间:2010-07-20 15:53:17

标签: php html utf-8

目前我的网站支持英语,葡萄牙语,瑞典语和波兰语。但由于某些原因,一些优秀的角色不正确,如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 个答案:

答案 0 :(得分:4)

您还需要将字符串转换为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

答案 1 :(得分:2)

如果你使用php从mysql数据库中检索数据,你应该在做任何事情之前使用这个查询..

mysql_query("SET NAMES utf8");

因此,从db接收的数据将被正确编码,如果它们正确存储在其中......

答案 2 :(得分:1)

或者,您可以使用iso-8859-1标准:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

答案 3 :(得分:0)

我的头开始于:

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

一切正常。