外语字符显示不正确


foreign characters not showing correctly

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

当我尝试写:"葡萄牙"时,它将输出以下内容:

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']."'");
  • 首先,确保您的 PHP 程序文件以 UTF-8 编码保存。(一个体面的编辑器应该允许您设置编码)

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

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

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

利用 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');

试试这个:

<?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