我正在尝试这样做,以便外语字符在我的网站上正确显示。
当我尝试写:"葡萄牙"时,它将输出以下内容:
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_encoding和 iconv。