首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PHP中的fwrite编写保加利亚字符

如何使用PHP中的fwrite编写保加利亚字符
EN

Stack Overflow用户
提问于 2012-02-17 06:52:26
回答 3查看 1.2K关注 0票数 1

我有一个表格,表格输入除了英语以外。

当单击submit按钮时,我将使用POST方法获取字符串。现在我想在一个名为'translate.php'.的新文件中写入字符串如果我使用fwrite,它对英语是正确的,但是其他语言如‘保加利亚语’,它将编写一个Unicode标准,比如1НАЧАЛО,这是en:Home中的实际单词。

在bulgarian:НАЧАЛО.

我会用英语写作,但我不能用保加利亚语写。

任何人都能帮我。

EN

回答 3

Stack Overflow用户

发布于 2012-02-17 07:00:12

转换字符的不是fwrite,而是HTML实体,而不是Unicode。我想你网站的编码设置为拉丁文-1。这意味着浏览器将把输入到表单中的数据提交给以拉丁语编码的服务器。保加利亚语不包括在拉丁文-1中,不能在其中编码,因此浏览器将这些字符编码为HTML实体。

有两种解决办法:

  1. 使用html_entity_decode($str, ENT_COMPAT, 'UTF-8')将那些HTML实体解码成实际的UTF-8。
  2. (首选)以UTF-8为您的站点服务,并/或在表单上设置accept-charset="utf-8"属性,以便浏览器将UTF-8数据提交给服务器。

要深入了解这一点,请参阅在Webapp应用程序中处理Unicode

票数 1
EN

Stack Overflow用户

发布于 2012-02-17 08:08:11

不知道这是否是您的情况,但是当您需要在另一个应用程序中包含UTF8内容的文件时,它必须包含一个标头,标记它是一个UTF8文件。

我使用下面的代码编写一个文件,并将其下载给浏览器。请参见add UTF-8 byte order mark下面的行

代码语言:javascript
运行
复制
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);

同样,如果您当前的写入文件的方法不像预期的那样工作(您没有为此发布代码),这只是需要考虑的问题。

票数 1
EN

Stack Overflow用户

发布于 2012-02-17 07:07:49

我不知道你的代码是什么样子,但你能试试:

代码语言:javascript
运行
复制
....
$string = utf8_encode($posted_string);
$f = fopen('/path/to/translate.php',"w");
fwrite($f, $string);
fclose($f);
....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9324095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档