如何在PHP中使用带有json_encode()的瑞典字母?

时间:2012-03-07 12:29:05

标签: php encoding json

我有一个这样的数组,我json编码:

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

    $jsonArray = json_encode( $regularArray );

(“Hejvärlden”意为瑞典语中的hello world)但是当我打印$jsonArray时,我得到了这个:

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

为什么数组中第二项的标签null?我知道它与“Världen”这个词有关,因为它包含一个非标准的字母。我怎么能绕过这个?

2 个答案:

答案 0 :(得分:3)

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
        )

)

我做了一个Test Page,它运作正常。

答案 1 :(得分:2)

json_encode期望输入为utf-8。将文件另存为utf-8。