- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用来自 deepl.com 的 API,它提供自动翻译。我通过 cURL 调用 API,并得到一个 json 字符串作为返回,该字符串看起来没问题,但由于某种原因无法被 PHP 解码。
让我首先展示如何进行 cURL 调用:-
$content = "bonjour <caption>monsieur</caption> madame";
$url = 'https://api.deepl.com/v2/translate';
$fields = array(
'text' => $content,
'target_lang' => $lg,
'tag_handling' => 'xml',
'ignore_tags' => 'caption',
'auth_key' => 'my_api_key');
$fields_string = "";
foreach($fields as $key=>$value)
{
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded','Content-Length: '. strlen($fields_string)));
$result = curl_exec($ch);
curl_close($ch);
如果在这个阶段我这样做
echo $result;
我得到:
{"translations":[{"detected_source_language":"FR","text":"Hola <caption>monsieur</caption> Señora"}]}
这对我来说似乎没问题。那么如果我使用下面的代码 -
echo gettype($result);
我得到的“string”仍然没问题,但现在,以下代码失败了:
$result = json_decode($result,true);
print_r($result);
输出为空!
如果我现在做这样的事情:
$test = '{"translations":[{"detected_source_language":"FR","text":"Hola <caption>monsieur</caption> Señora"}]}';
echo gettype($test);
$test = json_decode($test,true);
print_r($test);
我得到了一个完美的数组:
(
[translations] => Array
(
[0] => Array
(
[detected_source_language] => FR
[text] => Hola <caption>monsieur</caption> Señora
)
)
)
除了将内容从 API 复制/粘贴到静态变量之外,我什么也没做,它可以工作,但如果来自 API,则不行。就像 PHP 无法理解来自 API 的数据一样。
你知道出了什么问题吗?
谢谢!
劳伦特
最佳答案
我之前遇到过非常类似的问题,对我来说,问题在于从 API 返回的数据的编码是 unicode。我猜当您复制/粘贴时,您硬编码的字符串最终会成为不同的编码,因此在传递到 json_decode 时它可以正常工作。
PHP 文档指定 json_decode 仅适用于 UTF-8 编码的字符串: http://php.net/manual/en/function.json-decode.php
您可以使用 mb_convert_encoding() 转换为 UTF-8: http://php.net/manual/en/function.mb-convert-encoding.php
在调用 json_decode 之前尝试一下:
$result = mb_convert_encoding($result, "UTF-8");
关于PHP - json_decode - 解码字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53461129/
json_decode($var) 和 (object)json_decode($var, true) 有区别吗? 当最近在 Joomla virutemart 中处理某段代码时,我遇到了一个困惑的情
我正在尝试使用 PHP 和 json_decode 解析 JSON 文件,但是当返回的 JSON 是命名空间时,我很难做到这一点。例如: $json_ouput = json_decode($json
我返回了这个 RAW JSON,当我应用 json_decode 以数组形式访问数据时,它会将 trackingNumber 转换为科学记数法。有没有什么可能的方法可以避免这种情况而不会影响/舍入整数
当我将带有前导零数字的电话号码(即字符串)传递给 json_decode 时, 它删除第一个零字符并将其转换为浮点数。 $string = '09178882356'; //dynamic value
由于某种原因,我无法从返回的 jsonp 字符串中获取信息, add ?vorto=TheWordYouWant to the end of this website"; echo $Help;
我只是从 php 文档测试这个示例 ( http://au2.php.net/manual/en/function.json-decode.php ) 这是我的代码: ';?> 但它只返回一个空数组。
我有一个包含多个对象的 JSON 数组,并尝试使用 json_decode 来创建关联数组。 示例数据 $json='[{ type: "cool", cate
我有类似以下代码: 结果如下: int(9223372036854775807) 当然,这不是 json 字符串,我希望 json_decode 返回 null 或 false,如 manual 中
我有一个以下 JSON 字符串,通过 AJAX 到达服务器: {"Names":"[{0:'asdasd'}]","Values":"[{0:'ad'}]"} 如您所见,名称和值旨在保存一个数组。问题
通过示例最容易解释: var_dump(json_decode("[{'a':'b'},{'c':'d'},{'e':'f'}]")); // NULL var_dump(json_decode('[
我正在使用来自 deepl.com 的 API,它提供自动翻译。我通过 cURL 调用 API,并得到一个 json 字符串作为返回,该字符串看起来没问题,但由于某种原因无法被 PHP 解码。 让我首
我有这样编码的 JSON 对象 { "id": "", "steps": [ { "target": "purchase_order_items_itemma
这个问题在这里已经有了答案: Get information from JSON (2 个答案) 关闭 11 个月前。 我一直在尝试使用来自各种服务的一些 API,目前我正在尝试检索有关 vimeo
我有一个包含多个对象的 JSON 数组,并尝试使用 json_decode 来创建一个关联数组。 示例数据 $json='[{ type: "cool", ca
我有类似以下代码: 结果如下: int(9223372036854775807) 当然,这不是 json 字符串,我希望 json_decode 返回 null 或 false,如 manual 中
通过示例最容易解释: var_dump(json_decode("[{'a':'b'},{'c':'d'},{'e':'f'}]")); // NULL var_dump(json_decode('[
我有一个像这样的二维对象数组: function test(n){ this.id = n; } var testArray= new Array(2); for(i = 0; i 但是我得到一
我正在以这种方式在 javascript 中创建一个 json jsonArr.push({ position: 'WN', wind: windWN,
$objetos = json_decode($_POST['objetos']); $query1 = "DELETE FROM `usuarioObjeto` WHERE idusuario="
我刚刚开始真正使用 json,并尝试尽我所能地学习!我想分享我所做的这项工作,我觉得这可能需要一些改进,如果不是大部分的话。 好吧,我使用 twitch.tv REST_API。这是我的代码。基本上我
我是一名优秀的程序员,十分优秀!