Проблема с кодировкой при сохранении в файл XML с использованием SimpleXml

Я борюсь с проблемами кодирования в приложении PHP, которое:

  1. Читает файл XML и анализирует его в соответствии с некоторыми правилами
  2. Вызывает API Google Translate и использует результат для заполнения
    база данных, которая позже используется для отображения данных в браузере (что
    часть работает хорошо)
  3. Сохраняет эти данные в файл XML (сохраняет, но что-то не так
    с кодировкой).

Данные поступают из 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>&#x3088;&#x3046;&#x3053;&#x305D;&#xFF05;0 ST&#x6570;&#x5B66;</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 (), но не могу заставить его работать.

Я перепробовал все и посмотрел много других постов. Для жизни я не могу понять это. Любая помощь приветствуется.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]