json_encode의 한글처리

홍태화·2024년 1월 12일

😊 EUC-KR 형태의 데이터를 json_encode()에 바로 넘기지 말고 UTF-8로 바꿔서 보내주자

PHP로 json 데이터를 내보내는데 한글이 "null"로 나왔다
json_encode() 함수가 UTF-8 이외의 인코딩 형식의 문자열을 처리하는데
어려움을 겪는다더라~
한글이 EUC-KR과 같은 다른 문자 집합으로 인코딩되어 있을 때 발생할 수 있다

PHP의
array_walk_recursive() 함수 와 mb_convert_encoding() 함수를
사용하여 해결해보자

$sql = "쿼리문~~~";
$result = mysqli_query($sql) ~~~~


$row = mysqli_fetch_assoc($result);

array_walk_recursive($row, function (&$value) {

			// 데이터를 UTF-8로 변환
  $value = mb_convert_encoding($value, 'UTF-8', 'EUC-KR');
});

// UTF-8로 변환된 데이터를 JSON으로 인코딩
echo json_encode(['status' => 'success', 'data' => $row]);

array_walk_recursive()

다차원 배열의 모든 값을 돌면서 지정된 콜백 함수를 적용한다

mb_convert_encoding()

EUC-KR에서 UTF-8로 변환하는 작업을 수행

이제 ajax 콜백함수에서 받아보자

success: function (response) {

		if (response.status === "success") {
          const name = response.data.name;
        }
        
}
profile
우어어아아앙

0개의 댓글