programing

json_communications 함수: 특수 문자

stoneblock 2023. 2. 23. 21:59

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_mapping을 실행하다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을 사용하고 있는 페이지 상단에 이 행을 설정합니다.

  1. 데이터베이스에 json 데이터를 저장하는 경우 특정 열 정렬이 "로 설정되어 있는지 확인하십시오.latin1_swedish_ci".

언급URL : https://stackoverflow.com/questions/20694317/json-encode-function-special-characters