json_communications 함수: 특수 문자
어레이를 json_encode로 인코딩하면 특수 문자를 포함하는 어레이 요소가 빈 문자열로 변환됩니다.
$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF", "time"=>....);
$json = json_encode($arr);
JSON 부호화 후 [funds] 요소는 늘이 됩니다.이 문제는 "ComStage STOXX®Europe 600 Technology NR ETF"와 같은 특수 문자(상표, 상표 등)에서만 발생합니다.
좋은 의견이라도 있나?
감사해요.
업데이트: 어레이를 입력하기 전에 다음과 같이 문제를 해결했습니다(모든 이름은 DB에서 가져옵니다).
$mysqli->query("SET NAMES 'utf8'");
json_encode 매뉴얼에는 다음과 같이 지정되어 있습니다.
모든 문자열 데이터는 UTF-8로 인코딩되어야 합니다.
그러니까 한번 해봐array_map
ping을 실행하다utf8_encode()
어레이를 인코딩하기 전에 어레이에 접속합니다.
$arr = array_map('utf8_encode', $arr);
$json = json_encode($arr);
// {"funds":"ComStage STOXX\u00c2\u00aeEurope 600 Techn NR ETF"}
참고로 이 바이올린에 대한 세 가지 예제의 차이를 살펴보세요.첫 번째는 문자 인코딩을 사용하지 않고 두 번째는htmlentities
세 번째 용도는utf8_encode
- 모두 다른 결과를 반환합니다.
일관성을 유지하기 위해utf8_encode()
.
문서
입력은 UTF-8 또는 ISO-8859-1로 인코딩해야 합니다.
http://www.php.net/manual/en/function.json-encode.php
utf8이 아닌 문자 배열을 변환하려고 하면 반환값으로 0이 반환되기 때문입니다.
5.5.0 이후장애 시 반환값이 null 문자열에서 FALSE로 변경되었습니다.
저에게는 다음과 같이 동작합니다.
# Creating the ARRAY from Result.
$array=array();
while($row = $result->fetch_array(MYSQL_ASSOC))
{
# Converting each column to UTF8
$row = array_map('utf8_encode', $row);
array_push($array,$row);
}
json_encode($array);
다음 코드를 사용해야 합니다.
$json = json_encode(array_map('utf8_encode', $arr))
array_map 함수는 UTF8 표준에서 특수 문자를 변환합니다.
아래 기능을 사용합니다.
function utf8_converter($array)
{
array_walk_recursive($array, function (&$item, $key) {
if (!mb_detect_encoding($item, 'utf-8', true)) {
$item = utf8_encode($item);
}
});
return $array;
}
특수 문자의 탈출을 방지하기 위해 플래그를 전달합니다.
JSON_ESCAPED_유니코드
다음과 같이 합니다.
json_encode($array, JSON_UNESCAPED_UNICODE)
이 코드 mysql_set_charset()을 사용합니다.UTF8", $connection);
예: $connection = mysql_connect(DB_HOST_GATEWAY, DB_USER_GATEWAY, DB_PASSWORD_GATEWAY); mysql_set_charsetUTF8", $connection; mysql_select_db(DB_DATABASE_GATEWAY, $connection);
charset=을 추가해야 합니다.메타 태그에 UTF-8을 지정하고 특수 문자에 json_encode를 사용합니다.
$json = json_encode($arr);
json_encode 함수는 UTF8 표준에서 특수 문자를 변환합니다.
특수 캐릭터 문제를 해결하려면 두 가지 작업만 하면 됩니다.
1.mysql_set_charset('utf8');
// json을 사용하고 있는 페이지 상단에 이 행을 설정합니다.
- 데이터베이스에 json 데이터를 저장하는 경우 특정 열 정렬이 "로 설정되어 있는지 확인하십시오.
latin1_swedish_ci
".
언급URL : https://stackoverflow.com/questions/20694317/json-encode-function-special-characters
'programing' 카테고리의 다른 글
장치 테스트 시 종속 서비스 주입 AngularJS 서비스 (0) | 2023.02.23 |
---|---|
Go에서 JSON을 지도에 부분적으로 삽입 해제 (0) | 2023.02.23 |
Oracle에서 CLOB와 BLOB의 차이점을 이해할 수 있도록 지원 (0) | 2023.02.23 |
Oracle에서 사용자의 모든 권한을 표시하는 방법 (0) | 2023.02.23 |
리액트를 사용하여 여러 페이지 앱을 만드는 방법 (0) | 2023.02.23 |