我将数据存储到XML文件中时出现问题:
我使用的PHP脚本通过移动应用程序从用户接收数据并将其插入到XML文件中。但是,如果用户插入阿拉伯语单词(name-password -... etc),它将作为问号存储在XML文件中。
提示:我已经设置了XML编码= UTF8。
这是我的代码:
<html>
<head></head>
<form action="sign.php" method="post">
name :<input type="text" name="name"/><br />
pass :<input type="text" name="pass"/><br />
mob :<input type="text" name="mobile"/><br />
mail :<input type="text" name="email"/><br />
<input type="submit" name="send" value="send"/>
</form>
</html>
<?php
header('Content-Type: text/html; charset=Windows-1256');
$test = utf8_encode("ياسمين");
echo mb_detect_encoding($test);
echo $test;
if(isset($_POST['send'])){
if(isset($_POST['name']) && isset($_POST['pass']) && isset($_POST['mobile']) &&isset($_POST['email'])) {
$name = $_POST['name'];
$pass = $_POST['pass'];
$mob = $_POST['mobile'];
$mail = $_POST['email'];
$xml = simplexml_load_file('mowasla.xml');
$user = $xml->users->addChild('user');
$user->addChild('user_name', $name);
$user->addChild('pass', $pass);
$user->addChild('phone', $mob);
$user->addChild('email', $mail);
file_put_contents('mowasla.xml', $xml->asXML());
echo("done");
echo ($name);
}else{
echo("error");
die;
}
}
?>
答案 0 :(得分:0)
在PHP中,大多数与XML相关的函数都希望你在那里传递的字符串数据是UTF-8编码的。
在您的情况下,阿拉伯语文本不是UTF-8编码的。因此,XML库确实会替换它无法用替换字符识别的二进制字符序列,这里是问号(?)。
因此,在插入阿拉伯语单词之前,您需要确保字符串是UTF-8编码的。
请在W3C网站上查看这通常如何工作(这首先与PHP无关,但与HTTP和HTML无关):
要从问题的解决方案中技术上回答您的问题,您至少需要分享提交数据(阿拉伯语单词,用户名,密码)的编码。没有这些信息显示问号看起来是正确的,因为像你的电脑一样,我们也不能说。
参见: