2015-09-16 54 views
1

我一直在尋找和嘗試幾個小時,似乎無法找到任何能夠真正解決我的問題的東西。 我打電話給一個PHP函數,它使用Google翻譯API抓取內容,並傳遞一個要翻譯的字符串。 有很多情況下,編碼受到影響,但我已經完成了這一點,它仍然工作得很好,據我記憶。PHP的編碼問題

下面是調用該函數的代碼:

$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 
    } 
} 

我到底是什麼了越來越爲任何加重字符亂碼字符,如顧Ã ­ del desarrollador de XML 我試過編碼/解碼的所有組合我只是無法得到它的工作...

+0

你在哪裏看到亂碼?在一個HTML文件中? – Phil

+0

我正在用從該函數返回的字符串記錄一個XML文件。我多次調用該函數,用於我需要翻譯的XML文件的每個元素。我正在使用SimpleXML - '$ xml-> asXML($ xmlFile)' –

+0

我想出了(部分)。我正在處理上述的XML文件,它需要@gonzalon建議的編碼聲明,並且必須使用以下代碼才能使其正確顯示: '$ resultxt = $ responseDecoded ['data'] ['translations' ] [0] [ 'translatedText']; $ str = html_entity_decode($ resultxt); $ utf8 = utf8_decode($ str); return $ utf8;' –

回答

1

我有這樣的問題之前,我可以告訴你嘗試是:

  1. <head>標籤嘗試添加:

<meta http-equiv=」Content-type」 content=」text/html; charset=utf-8″ />

  • 嘗試添加它在PHP頭:
  • header(「Content-Type: text/html;charset=utf-8」);

  • 檢查文件的編碼,例如在Notepad ++
  • 編碼>UTF-8 without BOM

  • 設置字符集中的.htaccess
  • AddDefaultCharset utf-8

  • 正如你說你是從用戶讀取文件,您可以使用此功能: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; } >
  • +0

    謝謝。我試過了。問題是我不能控制加載哪個XML文件,它們是用戶生成的文件,可能不包含標題。我試圖在PHP頭中添加'charset = utf-8',它也不能正常工作... –

    +0

    @PauloHgo可能會使用'.htaccess'更新嗎? – gonzalon

    +0

    我需要做更多的研究,但是我只用那一行創建了一個.htaccess文件(這就是所需的全部內容?),並放在與我正在加載的PHP文件相同的文件夾中,但它不起作用。我從來沒有使用.htaccess之前... –