使用PHP编码问题

时间:2015-09-16 05:59:19

标签: php encoding utf-8

我一直在寻找和尝试几个小时,似乎无法找到任何能够解决我问题的东西。 我正在调用一个PHP函数,它使用Google翻译API来抓取内容,我正在传递一个字符串进行翻译。 有很多情况下编码受到影响,但我之前已经完成了这项工作,并且我记得很好。

以下是调用该函数的代码:

$name = utf8_encode(mt($name));

这是实际的功能:

function mt($text) {

    $apiKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    $url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source=en&target=es';
    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($handle);
    echo curl_error($handle);
    $responseDecoded = json_decode($response, true);
    $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);      //Fetch the HTTP response code
    curl_close($handle);

    if($responseCode != 200) {
        $resultxt = 'failed!';
        return $resultxt;
    }
    else {
        $resultxt = $responseDecoded['data']['translations'][0]['translatedText'];
        return utf8_decode($resultxt);  //return($resultxt) won't work either
    }
}

我最终得到的是任何突出角色的乱码,例如 Guaa del desarrollador de XML 我已经尝试过编码/解码的所有组合,但我无法让它工作......

1 个答案:

答案 0 :(得分:1)

之前我遇到过这类问题,我可以告诉你试试的是:

  1. <head>标记中尝试添加:
  2. <meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />

    1. 尝试将其添加到PHP标题中:
    2. header(“Content-Type: text/html;charset=utf-8”);

      1. 检查文件的编码,例如在Notepad ++
      2. 编码&gt; UTF-8 without BOM

        1. .htaccess
        2. 中设置字符集

          AddDefaultCharset utf-8

          1. 正如您所说,您正在阅读来自用户的文件,您可以使用此功能:mb-convert-encoding来检查编码,以及它是否与UTF-8转换不同。试试this

            $content = mb_convert_encoding($content, 'UTF-8'); if (mb_check_encoding($content, 'UTF-8')) { // log('Converted to UTF-8'); } else { // log('Could not converted to UTF-8'); } } return $content; } ?&GT;