gpt4 book ai didi

PHP - json_decode - 解码字符串问题

转载 作者:行者123 更新时间:2023-12-02 08:27:55 30 4
gpt4 key购买 nike

我正在使用来自 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com