서버에 일부 데이터를 저장하려고하지만 인코딩 문제가 발생했습니다.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에서 다시 인코딩하기 전에 웹 페이지에서 보낸 데이터와 결과를 병합하고 내용을 되돌려 놓습니다.
예상대로 작동합니다. 그러나 내 Jquery의 한 지점에서 보낸 데이터에는 "/ ö é ł Ż ę"와 같은 다양한 기호가 포함되어 있습니다.
파일을 저장하면 각 '/'앞에 이스케이프 문자 '\'가 있습니다 마찬가지로 'é'는 '\ u00e9'입니다.
어떻게 무시합니까? PHP에서 제대로 변환해야합니까, 아니면 $ .get ('data/theData.txt')를 가지고 올바른 형식으로 다시 변환해야할까요?
이 문제와 관련하여 불이 켜지는 경우 대단히 감사하기! 가난한 변수 이름을 용서하십시오.
중복 가능성 (http://stackoverflow.com/questions/4409039/convert-a-json-into-a-utf-8-string) –
@ IgnacioVazquez-Abrams : 나는 그것이 dup라고 생각하지 않는다. –
$ _POST 값에 base64_encode()를 사용하여 우리에게 주십시오. 이렇게하면 우리에게 바이너리 안전 문자열이 보존되므로 utf8인지 여부를 알려줄 수 있습니다. – goat