Как я могу использовать шведские буквы с json_encode () в PHP? - PullRequest
3 голосов
/ 07 марта 2012

У меня есть такой массив, который я json кодирую:

    $regularArray = array(      
        array( "label" => "Hello World", "value" => 1 ),
        array( "label" => "Hej Världen", "value" => 2 )
    );

    $jsonArray = json_encode( $regularArray );

("Hej världen" означает шведский мир на шведском языке) Но когда я печатаю $jsonArray, я получаю это:

[{"label":"Hello World","value":1},{"label":null,"value":2}]

Почему метка null для второго элемента в массиве? Я знаю, что это связано со словом «Världen», поскольку оно содержит нестандартные буквы. Как я могу обойти это?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

json_encode функция работает только с данными в кодировке UTF-8. Вы можете изменить данные входного массива на UTF-8.

Кодируйте данные входного массива, используя utf8_encode и декодируйте их всякий раз, когда вам нужны данные, используя utf8_decode

<?php
   $regularArray = array(      
        array( "label" => "Hello World", "value" => 1 ),
        array( "label" => "Hej Världen", "value" => 2 )
    );
    $regularArray[1]['label'] = utf8_encode( $regularArray[1]['label']);
    echo $jsonArray = json_encode( $regularArray );
    $data = json_decode($jsonArray, true);
    $data[1]['label'] = utf8_decode($data[1]['label']);
    print_r($data);

?>

Выход: -

[{"label":"Hello World","value":1},{"label":"Hej V\u00c3\u00a4rlden","value":2}]
Array
(
    [0] => Array
        (
            [label] => Hello World
            [value] => 1
        )

    [1] => Array
        (
            [label] => Hej Världen
            [value] => 2
        )

)

Я сделал Тестовую страницу , она отлично работает.

2 голосов
/ 07 марта 2012

json_encode ожидает, что ввод будет utf-8.Сохраните ваш файл как utf-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...