php - 编码 php postgres json_encode

标签 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"
    ]
},

我不知道为什么它适用于 array 而不适用于 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

预先感谢您的帮助

最佳答案

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

关于php - 编码 php postgres json_encode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062821/

相关文章:

php - html/php - 将表单文本格式化为 html

php - 在 WAMP PHP Google+ 项目中安装 Composer,无法识别 PHP

php - 从 PHP 代码查询 MySQL?

postgresql - 使用多个条件对分区进行排序

java - 导出ASN.1格式,然后用Base64 JAVA编码

PHP (ZLIB) 解压缩 C (ZLIB) 压缩数组会返回乱码

javascript - 如何以与 JavaScript 的 .toString(36) 相同的方式在 C# 中将 float 转换为 Base36

PHP 检查用户代理和 IP 以防止 session 劫持

sql - 嵌套自连接并创建多个总和

sql - case 语句中 "then"处或附近的语法错误