我有一个表单,表单输入不是英语语言。
当点击提交按钮时,我正在使用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. 如何在PHP中使用fwrite命令将$ symbol写入文件
- 5. 如何在命令行中使用参数。加利福尼亚
- 6. 如何使用fwrite写入数据0xf0f0f0f0
- 7. 如何写一个使用INT的fwrite()
- 8. 如何在PHP中使用重音符号编码字符
- 9. 如何在Jsoup中编写&字符
- 10. 如何在PHP中使用图像编写阿拉伯文字
- 11. 在.NET中,如何使用BOM编写UTF-16 XMLDocument字符串
- 12. 如何在Java中使用字符串格式编写% - Android Studio
- 13. 如何使用java在pdf文件中编写UTF-8字符
- 14. 如何在循环中使用readkey编写一个字符串?
- 15. php fwrite不写öäü/ utf8
- 16. fwrite php函数不写
- 17. PHP fwrite写空文件
- 18. C:使用fwrite来写字符到不同的线路
- 19. 如何使用#在字符串中PHP
- 20. 澳大利亚/墨尔本和澳大利亚/维多利亚州在NodaTime中是如何处理的?
- 21. FWRITE非ASCII字符
- 22. 利用亚行
- 23. PHP fwrite函数以utf-8编码编写txt文件
- 24. Android Xml - 如何在字符串中编写'@'字符?
- 25. 如何在.Net字符串中编写ASCII特殊字符
- 26. 如何使用编码ISO-8859-1在PHP中编写文件?
- 27. 如何利用Python中的字符串
- 28. 在PHP中,当我使用FWRITE,我没有得到正确的字符集
- 29. 如何在iPhone中使用大写字符分割字符串
- 30. 如何在WriteableBitmap上编写字符串?
哇!谢谢你,伟大的人。 – yogi46 2012-02-17 07:08:57
@ yogi46:如果这对你有效,你应该接受答案。 – 2012-07-12 10:56:48