我有一个表格,表格输入除了英语以外。
当单击submit按钮时,我将使用POST方法获取字符串。现在我想在一个名为'translate.php'.的新文件中写入字符串如果我使用fwrite,它对英语是正确的,但是其他语言如‘保加利亚语’,它将编写一个Unicode标准,比如1НАЧАЛО
,这是en:Home中的实际单词。
在bulgarian:НАЧАЛО.中
我会用英语写作,但我不能用保加利亚语写。
任何人都能帮我。
发布于 2012-02-17 07:00:12
转换字符的不是fwrite
,而是HTML实体,而不是Unicode。我想你网站的编码设置为拉丁文-1。这意味着浏览器将把输入到表单中的数据提交给以拉丁语编码的服务器。保加利亚语不包括在拉丁文-1中,不能在其中编码,因此浏览器将这些字符编码为HTML实体。
有两种解决办法:
html_entity_decode($str, ENT_COMPAT, 'UTF-8')
将那些HTML实体解码成实际的UTF-8。accept-charset="utf-8"
属性,以便浏览器将UTF-8数据提交给服务器。要深入了解这一点,请参阅在Webapp应用程序中处理Unicode。
发布于 2012-02-17 08:08:11
不知道这是否是您的情况,但是当您需要在另一个应用程序中包含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);
同样,如果您当前的写入文件的方法不像预期的那样工作(您没有为此发布代码),这只是需要考虑的问题。
发布于 2012-02-17 07:07:49
我不知道你的代码是什么样子,但你能试试:
....
$string = utf8_encode($posted_string);
$f = fopen('/path/to/translate.php',"w");
fwrite($f, $string);
fclose($f);
....
https://stackoverflow.com/questions/9324095
复制相似问题