— РЕШЕННО —
Задача решена. Решение прост:
file_get_contents("http://translate.google.com/translate_tts?tl=de&q=".urlencode($str)."&ie=UTF-8")
Для тех, кто приходит из поисковой системы: убедитесь, что вы установите кодировку файлов в UTF-8, включите в URL-адрес параметр ie = UTF-8, urlencode свою строку. Тогда все должно быть хорошо.
ОРИГИНАЛЬНАЯ ПОЧТА БЫЛА:
У меня возникла проблема с отправкой PHP правильно закодированного запроса GET в API TTS Google.
$str='This is a German string which contains crazy Umlaute like ä (like in Häuser) or ü (like in Übermensch). Sehr deutsch halt.'; file_get_contents("http://translate.google.com/translate_tts?tl=de&q=".$str."&ie=UTF-8");
Все включенные файлы PHP закодированы в UTF-8 (без байтов). То, что Google TTS возвращается ко мне, – это MP3-файл, который гласит «Umlaute» не как Übermensch, а как A ~ 1 / 4bermensch. Эта проблема не имеет ничего общего с клиентской стороной.
Я думаю, что Google ожидает строку ASCII, это может быть моей проблемой? Однако, когда я набираю строку GET в свой браузер вручную, все правильно написано. Смотрите также:
stackoverflow – API TTS Google для арабского, китайского и греческого языков
Спасибо за помощь!!
Вы должны установить URL-адрес кодировки Parameter & ie = utf-8 и кодировку самого файла python: #coding: utf-8 и обязательно сохраните файл .py с помощью кодировки utf-8 (не iso-8859-1 ).