【问题标题】:eZend_Json::encode or json_encode with special characterseZend_Json::encode 或带有特殊字符的 json_encode
【发布时间】:2012-03-30 17:22:18
【问题描述】:

我正在尝试对具有特殊字符(例如ñ)的数组进行编码。当我这样做时,它返回null。我尝试在 Zend 中使用这个选项:

Zend_Json::$useBuiltinEncoderDecoder = true: 

而且它不返回 null 但是,例如,在这个字符串中“带有ñ的东西”返回“带有\u00f1的东西”

如果我使用 json_encode,例如:

<?
$string = "something with ñ";
echo "<pre>";
print_r($string);
$encode_json = json_encode($string) ;
print_r($encode_json);
?>

返回是一样的:

带有ñ的东西

带有\u00f1的东西

如果我使用 utf8_enconde(),则返回这个字符 \u00c3 为 ñ。

有一些想法可以解决我的问题吗?我需要在数据库中保存带有ñ的列表单词,如果我可以保存另一个特殊字符会很棒。

【问题讨论】:

    标签: php json


    【解决方案1】:

    您也可以使用 json_encode() 函数对 Unicode 字符进行编码

    echo json_encode($yourdata, JSON_UNESCAPED_UNICODE);
    

    注意:这仅适用于 PHP 5.4 及以上版本

    【讨论】:

    • 我使用了 htmlentities($string, NULL, 'UTF-8');用一个简单的字符串就可以了。我会尝试一些更复杂的东西并在这里发布我的结果。
    【解决方案2】:

    \u00f1 部分很好:它指的是 Unicode 代码点 00F1:“带波浪号的小写字母 n。”

    对 JSON 进行解码的内容将理解为与 ñ 的含义相同。

    【讨论】:

    • 我怎样才能把这个字符翻译成ñ?这个词在数据库中,我必须以不同的格式检索它,比如数组、二维数组等。
    • 任何 JSON 解码器都会将 \u00f1 转换为诚实至善的 ñ 字符。使用您的示例代码,如果您通过 json_decode 运行生成的 JSON,您将得到 ñ
    猜你喜欢
    • 2015-07-08
    • 2017-02-27
    • 2014-01-08
    • 2018-07-16
    • 1970-01-01
    • 2017-07-12
    • 2016-12-08
    • 2016-11-26
    • 2023-03-14
    相关资源
    最近更新 更多