编码php postgres json_encode

时间:2013-06-12 10:08:22

标签: php postgresql encoding json

我的编码有问题......

一切都是UTF-8配置,即我的数据库(postgres)和我的php文件。

执行此脚本时:

$eleves = $serviceManager->getAll('Eleve');
echo "<pre>";
print_r($eleves);
echo "</pre>";

我明白了:

 [0] => Model_Eleve Object
    (
        [idEleve:Model_Eleve:private] => 28206
        [numeroscolaire:Model_Eleve:private] => ABE290999JOËL
        [nom:Model_Eleve:private] => Abedinpour
        [prenom:Model_Eleve:private] => Joël
        [dateNaissance:Model_Eleve:private] => 1999-09-29
        [sexe:Model_Eleve:private] => masculin
        [statusCourant:Model_Eleve:private] =>
        [statusSuivant:Model_Eleve:private] =>
        [adresses:Model_Eleve:private] => Array
            (
                [0] => Model_Adresse Object
                    (
                        [idAdresse:Model_Adresse:private] => 6176
                        [rue:Model_Adresse:private] => La Delèze
                        [numero:Model_Adresse:private] => 37
                        [codePostal:Model_Adresse:private] => 1164
                        [localite:Model_Adresse:private] => Buchillon
                        [emplacement:Model_Adresse:private] =>
                    )

            )

这里一切都好。但如果我想要JSON:

$eleves = $serviceManager->getAll('Eleve');
echo "<pre>";
echo json_encode($eleves, JSON_PRETTY_PRINT);
echo "</pre>";

我明白了:

{
    "nom": "Abedinpour",
    "prenom": "Jo\u00ebl",
    "adresse": [
        {
            "rue": "La Del\u00e8ze",
            "numero": "37",
            "localite": "Buchillon"
        }
    ],
    "classe": [
        "7VSG\/1"
    ]
},

我不知道为什么它适用于数组并且不适用于json_encode ...我试图改变utf8中的所有内容(使用htmlentities)但是它告诉我他不能转换'ASCII'

当我尝试在终端中使用此命令显示我的文件的编码时:

file -I myfile.php

它返回:

myfile.php: text/x-php; charset=us-ascii

但我无法将其转换为utf8:

iconv -f us-ascii -t utf-8 myfile.php > myfile2.php
file -I myfile2.php
myfile2.php: text/x-php; charset=us-ascii

提前感谢您的帮助

1 个答案:

答案 0 :(得分:3)

这是编码非ASCII字符的完全有效的JSON方式。这里没有错。任何正确解码它的客户端都将检索正确的字符。如果您更喜欢实际的UTF-8字符并运行PHP 5.4+,请使用JSON_UNESCAPED_UNICODE的{​​{1}}标记。