我有一個表單,表單輸入不是英語語言。
當點擊提交按鈕時,我正在使用POST方法獲取字符串。現在我想在一個名爲'translate.php'的新文件中編寫字符串。如果我用fwrite的工作正確的英語,但其他語言如「保加利亞」會寫這樣1НАЧАЛО
實際字的Unicode標準EN:首頁
在保加利亞:Н А Ч А Л О。
我可以寫英文,但我不能寫在保加利亞使用fwrite。
請任何人都可以幫助我。如何在PHP中使用fwrite編寫保加利亞字符
回答
這不是fwrite
這是變換你的字符,這些是HTML實體,而不是Unicode。我猜你的網站的編碼設置爲Latin-1。這意味着瀏覽器會將輸入的數據提交到以拉丁文-1編碼的服務器中。保加利亞語不在Latin-1範圍內,因此不能編碼,因此瀏覽器會將這些字符編碼爲HTML實體。
兩個解決方案:
- 使用
html_entity_decode($str, ENT_COMPAT, 'UTF-8')
的形式,因此在解碼的HTML實體實際UTF-8 - (首選)爲你的網站在UTF-8和/或設置
accept-charset="utf-8"
屬性瀏覽器將向服務器提交UTF-8數據
要深入研究,請參閱Handling Unicode in a Webapp。
我不知道你的代碼是什麼樣子,但你可以嘗試:
....
$string = utf8_encode($posted_string);
$f = fopen('/path/to/translate.php',"w");
fwrite($f, $string);
fclose($f);
....
'utf8_encode'將Latin-1編碼的字符串轉換爲UTF-8。除非要將Latin-1編碼的文本轉換爲UTF-8編碼的文本,否則這根本沒有用。 – deceze 2012-02-17 07:36:42
是的,多數民衆贊成在想法..因爲我認爲網站編碼設置爲拉丁-1。 – mlinuxgada 2012-02-17 07:39:03
但拉丁-1不能編碼保加利亞字符開始... – deceze 2012-02-17 07:40:51
不知道這是不是你的情況,但是當你需要UTF8內容的文件在其他應用程序,它具有包含標題爲UTF8文件的標題。
我使用下面的代碼寫入文件並將其作爲下載文件提供給瀏覽器。見線以下add UTF-8 byte order mark
:
header('Content-type: text/plain; charset=utf-8');
header('Content-Disposition: attachment; filename="UTF8 encoded file.sql"');
$f= fopen('php://output', 'w');
// add UTF-8 byte order mark
fwrite($f, pack("CCC",0xef,0xbb,0xbf));
fwrite($f, $fileOutput);
fclose($f);
同樣,這只是要心目中如果當前寫入文件不能按預期工作的方法(你沒有張貼的代碼)。
對於UTF-8,BOM不*「*需要」。它是可選的,一些軟件期望它,其他支持它,而其他*失敗*如果存在BOM。安全的選擇是*不*包含BOM,只有在需要打開文件的應用程序需要BOM(主要是MS程序)時才包含它。 – deceze 2012-02-17 08:15:14
是的,你是對的。這裏可能不是這種情況,因爲他寫入的文件是'translate.php',可能只包含在其他的php腳本中。 – talereader 2012-02-17 08:21:51
- 1. mysql保加利亞語言,字符集
- 2. 如何編寫使用的fwrite()函數在PHP
- 3. 如何在php中使用fwrite轉義字符
- 4. 如何使用com.mysql.jdbc.Driver將保加利亞字符字符串插入到MySQL數據庫中「
- 5. Php - fwrite壞字符
- 6. PHP fwrite函數爲什麼我不能在fwrite中寫入「$」字符
- 7. 如何在PHP中使用fwrite命令將$ symbol寫入文件
- 8. 如何在命令行中使用參數。加利福尼亞
- 9. 加入字符串和利用PHP
- 10. 如何使用fwrite寫入數據0xf0f0f0f0
- 11. 如何寫一個使用INT的fwrite()
- 12. 用pyExcelerate編寫特殊字符?如何保持utf-8編碼?
- 13. 如何在字符串中編寫XML?
- 14. 如何在Jsoup中編寫&字符
- 15. 如何在PHP中使用重音符號編碼字符
- 16. 如何在PHP中使用圖像編寫阿拉伯文字
- 17. 使用fwrite()編寫某些字節時出錯
- 18. 在excel中使用php編寫日期格式的字符串使用php
- 19. 如何在字符串中編寫PHP語法
- 20. 如何使用java在pdf文件中編寫UTF-8字符
- 21. 如何在Matlab中使用字符串編寫矩陣輸出
- 22. 如何在循環中使用readkey編寫一個字符串?
- 23. 在.NET中,如何使用BOM編寫UTF-16 XMLDocument字符串
- 24. 如何在Java中使用字符串格式編寫% - Android Studio
- 25. fwrite php函數不寫
- 26. php fwrite不寫öäü/ utf8
- 27. PHP fwrite寫空文件
- 28. C:使用fwrite來寫字符到不同的線路
- 29. 如何在字符串中編寫下標小寫字母
- 30. 澳大利亞/墨爾本和澳大利亞/維多利亞州在NodaTime中是如何處理的?
哇!謝謝你,偉大的人。 – yogi46 2012-02-17 07:08:57
@ yogi46:如果這對你有效,你應該接受答案。 – 2012-07-12 10:56:48