簡體   English   中英

PHP中的非英文字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM