0

データを XML ファイルに保存する際に問題があります。

モバイルアプリ経由でユーザーからデータを受け取り、それを XML ファイルに挿入する PHP スクリプトを使用しています。しかし、ユーザーがアラビア語 (name-password-... など) を挿入すると、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 Web サイトで、これが一般的にどのように機能するかを確認してください (これはまず、PHP ではなく HTTP と HTML に関連しています)。

問題の解決策で技術的に質問に答えるには、少なくとも送信されたデータ (アラビア語、ユーザー名、パスワード) のエンコーディングを共有する必要があります。疑問符が表示されている情報がなければ、コンピューターと同じように正しいように見えますが、どちらとも言えません。

同様に参照してください:

于 2013-02-06T10:01:01.167 に答える