0

我有一个越南语表格,它将数据提交到网络服务。此 Web 服务将该数据保存在一个文件中。但文件总是包含“0000”,没有别的......

在没有bom的情况下以utf-8保存数据编码的正确方法是什么?谢谢

这是我的 webservice.php:

if ($_SERVER["REQUEST_METHOD"] == "POST"){
    $data = $_POST["author"] . "\n" . $_POST["title"] . "\n" + $_POST["category"] . "\n" + $_POST["article"];
    $fileName = mb_convert_encoding($_REQUEST["author"], "UTF-8", "auto");
    $data = mb_convert_encoding($data, 'UTF-8', "auto");
    file_put_contents($fileName, $data, FILE_APPEND | LOCK_EX);
    print $data;
}else{
    invalidRequest();
} ?>
4

2 回答 2

3

您缺少 file_put_contents() 的文件名参数,您的代码不会将任何内容保存到文件中。


<edit>

也看看这个:

  + $_POST["category"] . "\n" + $_POST["article"];
  ^                           ^

您正在使用数学运算符 + ,因此您的字符串将被转换为数字(在这种情况下为 0)

于 2012-06-17T21:19:38.557 回答
2

您的表格应包含

<form ... accept-charset="UTF-8">

然后你可以在没有 mb_convert_encoding() 的情况下写入文件。但永远不要使用

$fileName = $_REQUEST["author"];

!就像是

$fileName = $author_names[$_REQUEST["author_id"]];

应该是安全的。

于 2012-06-17T21:24:51.477 回答