--- 解決済み ---
問題が解決しました。解決策は簡単です:
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 リクエストを Google TTS API に送信することに問題があります。
$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 が返すのは、「ウムラウテ」を Übermensch ではなく、A~1/4bermensch のように綴る MP3 ファイルです。この問題は、クライアント側とは関係ありません。
Google は ASCII 文字列を想定していると思いますが、これは私の問題でしょうか? ただし、ブラウザーに GET 行を手動で入力すると、すべてが正しく綴られます。以下も参照してください。
stackoverflow - アラビア語、中国語、ギリシャ語用の Google TTS API
手伝ってくれてありがとう!!