首页 > 解决方案 > 重音字符使用 curl 显示很奇怪

问题描述

我正在尝试使用 V3 API 将联系人添加到 Constant Contact 帐户。一些用户数据包含重音字符,当我添加这些时,它unicode在常量联系人帐户中显示为字符。

例如, 名字是GÒKÜL,姓氏是NÁTH。它始终显示为Gu00d2Ku00dcLNu00c1TH。我想将这些显示为原创。

我认为问题出在我的 curl 函数中以添加/更新联系人。下面是代码

function  updateContact($access_token,$contactid,$entry){
    $ch = curl_init();
    $base = 'https://api.cc.email/v3/';
    $url = $base . '/contacts/'.$contactid;
    curl_setopt($ch, CURLOPT_URL, $url);
    $authorization = 'Authorization: Bearer ' . $access_token;
    $ct = 'Content-Type: application/json;';
    curl_setopt($ch, CURLOPT_HTTPHEADER, array($authorization, $ct));
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);           
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $entry);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

我试过$ct = 'Content-Type: application/json; charset=UTF-8';$result = utf8_decode(curl_exec($ch));没有工作。

我想有人可以帮助我..

标签: phpcurlutf-8character-encodingconstantcontact

解决方案


这些不是“unicode”字符,它们看起来有点像 Unicode 转义序列,但是缺少反斜杠。你不应该得到Gu00d2Ku00dcL,但是G\u00d2K\u00dcL

我希望这些反斜杠确实存在,并且共享此输出时出现了问题。如果是这种情况,解析这些的最简单方法是使用该json_decode函数。

如果确实缺少这些反斜杠,那么这表明您正在使用的服务器已损坏,并且没有简单的解决方法。在这种情况下,您可能需要联系运行此服务器的人员并让他们知道。


推荐阅读