DBCS无法正常保存

时间:2011-01-25 09:41:47

标签: php utf-8

我有一个edit.php文件,可以让我编辑网页表单的内容。所有文本都存储在.txt文件中。当我尝试输入日语或韩语等字符时出现问题。

我会输入这个:“たんじょびおめでとう”

一旦我保存它就会返回:“%u305F%u3093%u3058%u3087%u3073%u304A%u3081%u3067%u3068%u3046”

是否有人对如何正确保存字符有任何想法。我发现如果我将.txt文件上的编码更改为UTF-8并使用记事本输入字符而不是通过edit.php它会保存得很好,但我宁愿不必这样做。

感谢您的帮助!

修改
我不确定要放什么代码,但我假设它与我的保存方式有关。这是我的save.php文件:

$content = $_POST['content'];  
if($content == ''){  
 echo "You cannot null this field, please reload the page.";  
} else {  
  echo $content;  
  $myFile = "text/".$_POST['id'].".txt";  
  $fh = fopen($myFile, 'w') or die("Could not update");  
  fwrite($fh,$content);  
  fclose($fh);  
}

1 个答案:

答案 0 :(得分:0)

您需要检查您输入的字符编码(可能是Windows上的ISO 8859-1或CP 1252)。

在任何情况下,将返回的字符串转换为所需的输出编码应该很容易,就像你的字符串:

  

%u305F%u3093%u3058%u3087%u3073%u304A%u3081%u3067%u3068%u3046

您输入的日语的10个Unicode转义序列(UTF-8)(“生日快乐”)。当您将它们直接输入到文本文件中时,我假设应用程序正在正确设置编码。

如果是Web表单,请检查请求标头中的编码设置,例如:

Content-Type    text/xml;charset=utf-8