在没有bom的情况下将文件保存在utf-8中

时间:2012-06-17 21:09:42

标签: php file utf-8 save

我有一份越南语表格,它将数据提交给网络服务。此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();
} ?>

2 个答案:

答案 0 :(得分:3)

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


<强> <edit>

另请看一下:

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

你在那里使用数学运算符+所以你的字符串将转换为数字(在这种情况下为0)

答案 1 :(得分:2)

您的表单应包含

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

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

$fileName = $_REQUEST["author"];

!像

这样的东西
$fileName = $author_names[$_REQUEST["author_id"]];

应该是安全的。