php使用utf8而不使用utf_encode

时间:2012-06-28 15:23:24

标签: php utf-8

我正在运行一个从mysql数据库获取内容的德语网站。 我将字符集定义为utf8如下:

<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />

问题是,当从数据库中获取+显示内容时,我总是需要使用utf8_encode才能获得正确的德语“变音符号”。

我想为我的网站维护utf8字符集,因为我必须添加更多具有特殊字符的语言。

关于如何以1:1回显数据库内容而不必使用utf8_encode的任何想法?

感谢

4 个答案:

答案 0 :(得分:2)

很难说没有看到你如何连接到你的数据库,但常见的问题是数据库连接本身。

打开/选择数据库后,您需要设置:

$db->exec('SET CHARACTER SET utf8');    // PDO

mysql_set_charset('utf8');    // Deprecated mysql_* extension

答案 1 :(得分:1)

每当我想在PHP和MySQL中使用utf-8时,我发现通常这两个函数是mysql_connect()后应该使用的函数:

mysql_set_charset('utf8', $link);
mysql_query('SET NAMES utf8', $link);

答案 2 :(得分:0)

在标题中设置内容类型可以解决问题:

header('content-type: text/html; charset=utf-8');

答案 3 :(得分:0)

我遇到了类似的问题,我在PHP文件的开头解决了这个问题:

ini_set('default_charset', 'UTF-8');
mb_internal_encoding('UTF-8');

此外,检查您是否在没有BOM的情况下以UTF-8格式保存PHP文件非常重要,我对此非常头疼。我推荐Notepad++,它显示当前的文件编码,并允许您在没有BOM的情况下转换为UTF-8。

如果您想查看我的问题和解决方案,it is here

希望它可以帮到你!