0

我正在尝试这样做,以便在我的网站上正确显示外来字符。

当我尝试写:“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']."'");
4

3 回答 3

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

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

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

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

于 2013-10-18T16:25:40.757 回答
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');
于 2013-10-18T16:17:03.590 回答
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 。

于 2013-10-18T16:23:36.430 回答