我有一份越南语表格,它将数据提交给网络服务。此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();
} ?>
答案 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"]];
应该是安全的。