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