php - 外来字符显示不正确

时间:2013-10-18 16:15:13

标签: php

我正试图在我的网站上正确显示外国字符。

当我尝试写作:“Português”时,它会输出:

Português

我使用的代码是:

$name = htmlspecialchars(stripslashes($f['forum_name']));

我也试过这个:

$name = html_entity_decode(stripslashes(stripslashes($f['forum_desc'])));

但那给了我:

Português

我做错了什么?

编辑:$ f来自:

$sf=mysql_query("SELECT * FROM forum_cats WHERE forum_type='0' AND forum_type_id='".$h['forum_id']."'");

3 个答案:

答案 0 :(得分:1)

  • 首先,确保您的PHP程序文件使用UTF-8编码保存。 (一个不错的编辑器应该允许你设置编码)

  • 其次,请确保您的HTML代码指定UTF-8编码:确保HTML头中包含以下元标记:

    <meta charset="UTF-8">
    
  • 第三,扔掉所有实体解码,尤其扔掉stripslashes()

您可能还需要做进一步的工作,以确保系统中的所有内容都使用UTF-8编码(例如数据库,其他输入文件)。

答案 1 :(得分:0)

使用utf-8解码

<?php
echo utf8_decode("Português");//Português

编辑 :(来自您最新的问题更新) 在PHP代码之上添加它。

<?php
ini_set('default_charset','utf-8');
mysql_set_charset('utf8');
header('Content-type: text/html; charset=utf-8');

答案 2 :(得分:0)

试试这个:

<?php echo iconv(mb_detect_encoding($f['forum_name'], "UTF-8,ISO-8859-1"), "UTF-8", $f['forum_name']); ?>

使用mb_detect_encoding()检测字符串的字符集类型,使用iconv()将字符串转换为请求的字符编码。

您可以在官方文档网站上推荐mb_detect_encodingiconv