0

我在将数据存储到 XML 文件时遇到问题:

我正在使用一个 PHP 脚本,它通过移动应用程序从用户接收数据并将其插入 XML 文件。但是,如果用户插入阿拉伯语单词(名称-密码-...等),它将作为问号存储在 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;

     }
  }

 ?>
4

1 回答 1

0

在 PHP 中,大多数与 XML 相关的函数都希望您传入的字符串数据是 UTF-8 编码的。

在您的情况下,阿拉伯文本不是 UTF-8 编码的。因此,XML 库确实用替换字符替换了它无法识别的二进制字符序列,这里是问号 (?)。

因此,在插入阿拉伯语单词之前,您需要确保字符串是 UTF-8 编码的。

请在 W3C 网站上查看这通常是如何工作的(这首先与 PHP 无关,而是与 HTTP 和 HTML 相关):

要从技术上通过解决您的问题来回答您的问题,您至少需要分享提交的数据(阿拉伯语单词、用户名、密码)的编码方式。没有显示问号的信息看起来是正确的,因为就像您的计算机一样,我们也不能说。

另见:

于 2013-02-06T10:01:01.167 回答