Ошибка кодирования в PHP с помощью Google Translate
-
19-09-2019 - |
Вопрос
У меня есть кое-какой текст, который мне нужно перевести на японский.
Translate text, webpage, or document
Google Translate возвращает строку в виде:
翻訳テキスト、 Webページ、またはドキュメント
Когда я записываю этот текст в файл (ja.po), он выглядит следующим образом:
–|–óƒeƒLƒXƒgA Webƒy[ƒWA‚Ü‚½‚̓hƒLƒ…ƒƒ“ƒg
В чем могла бы заключаться ошибка?
Я использую poeditor.exe чтобы просмотреть файл.В настоящее время я не использую никаких функций кодирования.
for(/*extracting from the trnslated string array*/)
{
$pattern = "/msgid \"".preg_quote($id, '/')."\"(\r?\n)msgstr \"\"/";
$string = str_replace('"', '\"', $string);
$replacement = "msgid \"$id\"\nmsgstr \"". $string . "\"";
$res = preg_replace($pattern, $replacement, $con);
$con = $res;
}
file_put_contents("ja.po", $con);
Решение
Как вы получаете строку из Google и как вы ее пишете?Я полагаю, где-то на этом пути он преобразуется из UTF8 в latin1.Если вы можете выяснить, где это происходит, используйте mb_convert_encoding
чтобы это исправить.
Кстати, переведенный японский довольно плох.;)
Другие советы
Похоже, что программа, которую вы используете для чтения этого файла, не понимает формат кодировки, в котором вы его записали.Используете ли вы UTF8 до конца?Может быть, попробовать http://www.php.net/manual/en/function .iconv.php преобразовать его в UTF8, если это какая-то другая кодировка.