php-外来字符未正确显示

php-外来字符未正确显示,php,Php,我正试图这样做,外国字符是正确显示在我的网站上 当我尝试写“葡萄牙”时,它会输出以下内容: Português 我使用的代码是: $name = htmlspecialchars(stripslashes($f['forum_name'])); 我也试过: $name = html_entity_decode(stripslashes(stripslashes($f['forum_desc']))); 但这给了我: 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']."'");

利用utf-8解码

<?php
echo utf8_decode("Português");//Português
试试这个:

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

使用
mb\u detect\u encoding()
检测字符串的字符集类型,并使用
iconv()
将字符串转换为请求的字符编码

您可以在官方文档网站上查阅和下载。

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

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

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


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

这样做:$name=utf8\u decode($f['forum\u name');不起作用。输出这个:如果您使用mysqli,您需要添加这个,只需像这样将字符集指定为utf-8<代码>$dbh=newpdo('mysql:charset=utf8')
f['forum_name']来自哪里?是什么让你认为
stripslashes()
会有任何帮助?这与问题完全无关。我已经用$f的来源更新了我的问题。关于斜杠-有时我的文本生成\\\\。这就是我添加它的原因。@oliverbj,谢谢。编辑了我的答案。没有更改任何内容。您是否将数据库连接设置为utf-8?如下所示:
$connection=mysqli\u connect(DB\u SERVER,DB\u USER,DB\u PASS)
mysqli\u set\u字符集($connection,'utf8')
<meta charset="UTF-8">