2013-10-18 153 views
0

我想這樣做外國字符在我的網站上正確顯示。php - 外國字符顯示不正確

當我嘗試寫: 「葡萄牙語」 它會輸出這樣的:

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']."'"); 
+1

http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –

+0

'$ f ['forum_name'])''從哪裏來? –

+0

是什麼讓你覺得'stripslashes()'會有所幫助?這與問題完全無關。 – Spudley

回答

1
  • 首先,確保你的PHP程序文件是用UTF-8編碼保存的。 (一個體面的編輯器應該允許您設置編碼)

  • 二,請確保您的HTML代碼指定UTF-8編碼:確保你在你的HTML頭下面的meta標籤:

    <meta charset="UTF-8"> 
    
  • 第三,扔掉所有的實體解碼,特別是扔掉stripslashes()

您可能還需要做進一步的工作,以確保一切都在你的系統使用的是UTF-8編碼(如數據庫,其他輸入文件)。

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'); 
+0

這樣做:$ name = utf8_decode($ f ['forum_name']);不起作用。輸出:Português – oliverbj

+0

如果您使用的是mysqli,則需要添加此內容,只需將charset指定爲utf-8。 '$ dbh = new PDO('mysql:charset = utf8');' –

+0

那也沒用。 – oliverbj

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_encodingiconv

+0

不改變任何東西。 – oliverbj

+0

你是否將數據庫連接設置爲utf-8? – CIRCLE

+0

像這樣:'$ connection = mysqli_connect(DB_SERVER,DB_USER,DB_PASS);' \t'mysqli_set_charset($ connection,'utf8');'' – CIRCLE