サーバーにデータを保存しようとしていますが、エンコードの問題が見つかりました。
これが私のオブジェクトをPHPに送信する方法です(これは正常に機能しますが、contentTypeが実際に何もしていないと思います):
$.post(
'myfile.php',
{
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data : myData
},
function (data, textStatus, jqXHR){
//some code here
}
);
そしてPHP(myfile.php)では:
<?php
header('Content-Type: text/html; charset=utf-8');
$file = 'data/theData.txt'; //the file to edit
$current = file_get_contents($file); // Open the file to get existing content
$a2 = json_decode( $current, true );
$data = $_POST['data']; //the data from the webpage
$res = array_merge_recursive( $data, $a2 );
$resJson = json_encode( $res );
// Write the contents back to the file
file_put_contents($file, $resJson);
?>
ご覧のとおり、ファイルの元の内容を取得してjsonをデコードしています。次に、結果をWebページから送信されたデータとマージしてから、jsonで再エンコードし、コンテンツを元に戻します。
これはすべて期待どおりに機能します。ただし、私のJqueryのある時点で、送信されるデータには「/ö鳯ę」のようなさまざまな記号が含まれています。
ファイルが保存されると、各「/」の前にエスケープ文字「\」が付きます。同様に、たとえば「é」は「\u00e9」です。
これをオーバーライドするにはどうすればよいですか?PHPで適切に変換する必要がありますか、それとも$ .get('data / theData.txt'を取得した後、JQueryで正しい形式に変換する方法ですか?
この問題に光を当てることは大歓迎です!貧弱な変数名を許してください。