Я борюсь с проблемами кодирования в приложении PHP, которое:
Данные поступают из Google Translate, закодированного в UTF-8 и в браузере, при условии, что у вас есть правильный заголовок, который отлично отображается на любом языке.
Вот функция Google Translate:
function mt($text, $lang) {
$url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source=en&target=' . $lang;
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($handle);
$responseDecoded = json_decode($response, JSON_UNESCAPED_UNICODE);
$responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
if($responseCode != 200) {
$resultxt = 'not200result';
}
else {
$resultxt = $responseDecoded['data']['translations'][0]['translatedText'];
}
return $resultxt;
}
Я использую Simplexml, чтобы загрузить файл XML, изменить его содержимое и сохранить его с помощью asXml ().
Сгенерированный XML-файл кодируется в чем-то отличном от UTF-8, как это выглядит так:
<value>ようこそ%0 ST数学</value>
Вот код, который приписывает перевод узлу XML и сохраняет его.
$xml=simplexml_load_file('myfile.xml'); //Load source XML file
$xml->addAttribute('encoding', 'UTF-8');
$xmlFile = 'translation.xml'; //File that will be saved
//Here I have a call to the MT function above and get it to the XML file at face value.
$xml->asXML($xmlFile) //save translated XML file
Я пытался использовать htmentities () и играл с utf8_encode () и utf8_decode (), но не могу заставить его работать.
Я перепробовал все и посмотрел много других постов. Для жизни я не могу понять это. Любая помощь приветствуется.
Задача ещё не решена.
Других решений пока нет …