[英]Non-English characters in PHP
我有一個問題,使用PHP將非英語字符寫入文件(.txt)。 這是我的代碼:
$str = "â€êþÿûîœøîô‘ë’ðüïlæ߀¿×÷¡ï";
$str = htmlentities($str, ENT_QUOTES, mb_detect_encoding($str));
$str =htmlspecialchars_decode(html_entity_decode($str),ENT_QUOTES);
$f = fopen("test.txt","w");
fputs($f,$str);
fclose($f);
當我打開文件時,結果是: â€êþÿûîœøîô'ë'ðüïlæ߀¿×÷¡ï
正如您所看到的那樣,歐元符號在文件和其他符號中仍然沒有正確顯示。
任何人都有想法解決這個問題?
的轉化€
到€
由htmlentities()
函數完成; 既然您正在編碼成HTML實體並在之后解碼,我建議將此步驟退出:
$str = "â€êþÿûîœøîô‘ë’ðüïlæ߀¿×÷¡ï";
$f = fopen("test.txt","w");
fputs($f,$str);
fclose($f);
假設您想保留這種編碼/解碼業務(看起來您正在嘗試使用編碼/解碼過程在字符集之間進行轉換?):
在編碼步驟中,您在輸入字符串上使用mb_detect_encoding
並將其傳遞給htmlentities
,這樣可以正確檢測輸入中的歐元符號(大多數情況下)。
但是,在解碼步驟中,您沒有指定任何字符集,因此html_entity_decode
將選擇ISO-8859-1,其中不包括歐元符號。
如果你想保持這個代碼塊大致相同,你需要選擇一個字符串來解碼,包括你想要的所有字符(如UTF-8或ISO-8859-15)。
編輯:這是一個基於你的代碼的例子(我選擇了ISO-8859-15,但你真的需要知道或決定你想要的輸出字符集):
$str = "â€êþÿûîœøîô‘ë’ðüïlæ߀¿×÷¡ï";
$str = htmlentities($str, ENT_QUOTES, mb_detect_encoding($str));
$str = html_entity_decode($str, ENT_QUOTES, 'ISO-8859-15');
$f = fopen("test.txt","w");
fputs($f,$str);
fclose($f);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.