[英]Outputting file contents as UTF-8 leads to character encoding issues
我將標題設置如下:
header( 'Content-Type: text/html; charset="utf-8"' );
然后使用以下代碼段將服務器上的本地文件輸出到瀏覽器:
$content = file_get_contents($sPath);
$content = mb_convert_encoding($content, 'UTF-8');
echo $content;
我在服務器上擁有的文件是由lua創建的,因此,以下輸出為FALSE
(轉換前):
var_dump( mb_detect_encoding($content) );
這些文件包含一些字符,例如™
( ™
)等,它們在瀏覽器中顯示為普通方形框。 我已閱讀以下被建議為類似問題的線程,並且我的代碼中的所有變體都無濟於事:
.txt
) 當我簡單地使用以下內容時,似乎沒有問題:
header( 'Content-Type: text/html; charset="iso-8859-1"' );
// setting path here
$content = file_get_contents($sPath);
echo $content;
當我簡單地使用以下內容時,似乎沒有問題:
header( 'Content-Type: text/html; charset="iso-8859-1"' ); // setting path here $content = file_get_contents($sPath); echo $content;
因此,這意味着文件內容實際上是按照ISO-8859-1編碼的。 如果要將其輸出為UTF-8,則將其從ISO-8859-1明確轉換為UTF-8:
$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1');
您始終需要知道要從中進行轉換。 只是告訴PHP“轉換為UTF-8”,然后讓其猜測要轉換的內容會有不確定的結果,在您的情況下,它是行不通的。
檢查文件編碼,是否為沒有BOM的utf-8 ? 例如,使用notepad ++進行檢查文件編碼。
或者也許它很有用:
$content = file_get_contents($sPath);
$content = htmlentities($content);
echo $content;
或者嘗試.htaccess:
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.