サーバーにデータを保存しようとしていますが、エンコードの問題があります。PHPでutf-8でエンコードされたjsonを.txtファイルに保存するには
私は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をデコードしています。私はその後、jsonで再エンコードする前にWebページから送信されたデータと結果をマージし、内容を元に戻します。
これはすべて正常に動作します。しかし、私のJqueryの一点では、 "/ö鳯ę"のような多種多様なシンボルが含まれています。
ファイルが保存されると、それぞれ '/'の前にエスケープ文字 '\'同様に 'é'は '\ u00e9'です
これはどのように無効にしますか?私はPHPで正しく変換しようとするか、$ .get( 'data/theData.txt')を持っていれば正しい形式に変換する方法でしょうか?
大歓迎です!貧しい変数名を許しなさい。
(http://stackoverflow.com/questions/4409039/convert-a-json-into-a-utf-8-string)[UTF-8文字列にJSONを変換]の可能な重複 –
@ IgnacioVazquez-Abrams:私はそれがダブだとは思わない。 –
$ _POSTの値にbase64_encode()を使用し、それを私たちに渡します。これは私たちのためにバイナリの安全な文字列を保存するので、utf8かどうかをあなたに伝えることができます。 – goat