我正试图在我的网站上正确显示外国字符。
当我尝试写作:“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']."'");
答案 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_encoding和iconv。