2013-06-12 46 views
0

我有一个问题,我的编码...编码php postgres json_encode

一切都是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(与ヶ辆),但它告诉我,当我试图表明我的文件编码使用此命令在终端,他不能将“ASCII”

file -I myfile.php 

它返回:

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

,但我不能将其转换为UTF-8:

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

在此先感谢您的帮助

回答

2

这是完全有效的JSON方式来编码非ASCII字符。这里没有什么是错的。任何正确解码的客户端都会检索到正确的字符。如果您更喜欢实际的UTF-8字符并运行PHP 5.4+,请使用JSON_UNESCAPED_UNICODE标志json_encode

+0

是啊,它很好用!但是有可能同时拥有JSON_UNESCAPED_UNICODE和JSON_PRETTY_PRINT?我试过这个: $ eleves2 = json_encode($ eleves,JSON_UNESCAPED_UNICODE); $ eleves3 = json_encode($ eleves2,JSON_PRETTY_PRINT); 但它不起作用... – theplayer777

+0

参数是一个位标志,要传递两个*或*他们:'JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT'。 – deceze

+0

刚刚找到的Oups:json_encode($ eleves,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);谢谢你的帮助! – theplayer777