2013-04-04 59 views
6

’正在顯示的,而不是-在PHP頁面’正在顯示代替 -

我使用不同的編碼類型,如嘗試:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

但結果是一樣的。可能是什麼問題呢?

輸入

<strong style="color:#A8A8A8;">1</strong> - Lorem存有。

結果

€「Lorem存有。

+0

代碼請:-) – HamZa 2013-04-04 10:50:39

+0

如果你沒有得到任何與這兩個元標籤不同的東西,那麼你的HTML可能會在某處被打破。如果ISO-8859-1改爲使用'?'而不是'-',那麼您已經對字符串進行了雙重編碼 – ANisus 2013-04-04 11:00:30

+0

如果服務器發送帶有字符集的真正的HTTP Content-Type頭,則元標記沒有效果。 – Esailija 2013-04-04 11:22:19

回答

4

確保您的HTML頭指定UTF8

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

這通常是卓有成效的,我(很明顯,如果內容是UTF8)。

如果您設置了內容類型,則不需要轉換爲html實體。


檢查http://php.net/manual/en/function.mb-convert-encoding.php

<?php 
    header('Content-Type: text/html; charset=utf-8'); 
    mb_internal_encoding('utf-8'); 
?> 

可能這會幫助你。

2

它看起來像你的源數據一路轉換爲另一種編碼。嘗試確保所有步驟具有相同的編碼。

  1. 你的(MySQL?)數據存儲爲UTF8嗎?
  2. 你的.php文件保存爲UTF8嗎?

當處理UTF8數據爲ISO-8859-1數據時,這種轉換錯誤通常會彈出。 (多字節與單字節?不確定)。

2

元標記不改變輸出的事實是一個強有力的指標,有一些重寫它的東西;可能它是在HTTP標頭中指定的字符集(它優先於meta標籤),你確定你沒有設置它嗎?

1

由於â€「是UTF-8編碼字符的iso-8859-1演示文稿,因此您的文檔很可能使用UTF-8編碼。

你需要的是元標記你的描述:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 

因爲它不工作,標籤可能被忽略。建議使用瀏覽器並檢查它嘗試使用哪種編碼(Chrome中的工具 - 編碼)。

  • 如果瀏覽器使用UTF-8,則會對字符進行雙重編碼。檢查你的代碼,如果沒有過多utf8_encode(...)
  • 如果瀏覽器使用Latin1(iso-8859-1),你的標記將被HTTP頭忽略或覆蓋。嘗試使用在線驗證器驗證您的HTML。使用瀏覽器的開發工具檢查發送的頭文件信息,以確保iso-8859-1未被設置爲編碼。
+0

'utf8_encode()'給了我。好像我添加它來試圖解決這個問題,但通過設置正確的元(如上所述)並刪除該行代碼來修復它。謝謝 :) – 2014-01-13 20:29:26

0

從javacode創建文件並將編碼設置爲UTF-16時有同樣的問題做了訣竅。