将数组转换为JSON时,json_encode返回JSON_ERROR_UTF8

rfc1484

我正在尝试将巴西葡萄牙语中的值转换为JSON的数组。

这是一个数组示例:

array(1) {
  ["title"]=>
  string(77) "Cartão Credicard Universitário Visa Crédito "
}

如果我使用mb_detect_encoding它,则表明所有值和键都是ASCII或UTF8。

但是,如果我尝试使用json_encode生成json,它会返回一个false,json_last_error函数会说错误是JSON_ERROR_UTF8

但是,如果我首先将utf8_encode_deep函数应用于数组(http://php.net/manual/es/function.utf8-encode.php),则会生成json且不会给出任何错误。

该解决方案的问题在于它返回了某些编码错误的单词。

例子:

申请之前的词utf8_encode:Cartão(良好编纂)

申请后的词utf8_encode:Cartão(错误的编纂)

因此,尽管它生成了JSON,但由于它弄乱了单词,因此无法解决我的问题。

这是我正在使用的代码:

try {
  $dbh = new PDO("mysql:host=$hostname;dbname=$database;", $username, $password);
  $sql = "SELECT title FROM card";
  $stmt = $dbh->query($sql);

  $result = $stmt->fetch(PDO::FETCH_ASSOC);
  $json = $json_encode($result);
  $error = json_last_error();

  var_dump($json, $error === JSON_ERROR_UTF8);
} catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage() . '\n';
}

如果我尝试使用charset = utf8或charset = utf8mb4连接到数据库,它将检索Cartão(错误编码)而不是Cartão(良好编码)

我也曾尝试将JSON_UNESCAPED_UNICODE用作参数json_encode,但结果仍然与未使用此参数相同。

有什么建议?

更新:我已通过一个具体情况简化了此示例,发生了此问题。

更新2:添加了一些代码以阐明示例,并在注释中添加了有关可能解决方案的一些说明。

乔尼

“如果我尝试使用charset = utf8或charset = utf8mb4连接到数据库,它将检索Cartão(错误编码),而不是Cartão(良好编码)”

您使用的是latin1作为显示编码,因此UTF-8编码的正确文本无法正确显示。

添加charset=utf8到连接字符串,并将响应字符集设置为UTF-8:

header('Content-Type: text/html;charset=utf-8');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在使用json_encode将数组转换为json时,没有让Json无效的

来自分类Dev

json_encode()自动将数组转换为对象

来自分类Dev

PHP 数组不使用 json_encode 转换为 JSON

来自分类Dev

PHP json_encode将utf8字符串转换为字符代码

来自分类Dev

使用 json_encode 将 PHP 数组转换为 JSON 不起作用

来自分类Dev

如何将json_encode返回的对象转换为javascript变量

来自分类Dev

在PHP中使用json_encode将UTF-8单词编码为JSON格式时显示未知字符

来自分类Dev

将xml数据转换为json时返回空数组

来自分类Dev

Json_encode-将数组转换为json对象

来自分类Dev

在 PHP 中不使用 json_encode 将 XML 转换为 JSON

来自分类Dev

json_encode返回"

来自分类Dev

json_encode()返回false

来自分类Dev

Json_encode多维数组

来自分类Dev

数组php的json_encode

来自分类Dev

json_encode,utf8和希腊字符

来自分类Dev

utf-8和json_encode中的PHP编码

来自分类Dev

PHP 5.3.3中的json_encode UTF-8

来自分类Dev

将json_encode($ data)转换为div的仅数据列表的最简单方法

来自分类Dev

json_encode用于将多行字符串php转换为javascript

来自分类Dev

Guzzle和Stack Exchange API,解析错误“ JSON_ERROR_UTF8”

来自分类Dev

json_encode返回一个PHP数组

来自分类Dev

强制json_encode返回数组而不是对象

来自分类Dev

json_encode返回不确定的结果,数组或对象

来自分类Dev

json_encode 返回列名和数组索引

来自分类Dev

Json_encode 合并数组,但只返回 1 行

来自分类Dev

json_encode 返回充满空值的数组

来自分类Dev

当数组在php中为空时,json_encode函数不返回大括号{}

来自分类Dev

json_encode使用jquery.get()发布数据时以字符串形式返回数组

来自分类Dev

将包含utf-8符号的json字符串转换为php数组

Related 相关文章

  1. 1

    在使用json_encode将数组转换为json时,没有让Json无效的

  2. 2

    json_encode()自动将数组转换为对象

  3. 3

    PHP 数组不使用 json_encode 转换为 JSON

  4. 4

    PHP json_encode将utf8字符串转换为字符代码

  5. 5

    使用 json_encode 将 PHP 数组转换为 JSON 不起作用

  6. 6

    如何将json_encode返回的对象转换为javascript变量

  7. 7

    在PHP中使用json_encode将UTF-8单词编码为JSON格式时显示未知字符

  8. 8

    将xml数据转换为json时返回空数组

  9. 9

    Json_encode-将数组转换为json对象

  10. 10

    在 PHP 中不使用 json_encode 将 XML 转换为 JSON

  11. 11

    json_encode返回"

  12. 12

    json_encode()返回false

  13. 13

    Json_encode多维数组

  14. 14

    数组php的json_encode

  15. 15

    json_encode,utf8和希腊字符

  16. 16

    utf-8和json_encode中的PHP编码

  17. 17

    PHP 5.3.3中的json_encode UTF-8

  18. 18

    将json_encode($ data)转换为div的仅数据列表的最简单方法

  19. 19

    json_encode用于将多行字符串php转换为javascript

  20. 20

    Guzzle和Stack Exchange API,解析错误“ JSON_ERROR_UTF8”

  21. 21

    json_encode返回一个PHP数组

  22. 22

    强制json_encode返回数组而不是对象

  23. 23

    json_encode返回不确定的结果,数组或对象

  24. 24

    json_encode 返回列名和数组索引

  25. 25

    Json_encode 合并数组,但只返回 1 行

  26. 26

    json_encode 返回充满空值的数组

  27. 27

    当数组在php中为空时,json_encode函数不返回大括号{}

  28. 28

    json_encode使用jquery.get()发布数据时以字符串形式返回数组

  29. 29

    将包含utf-8符号的json字符串转换为php数组

热门标签

归档