Google TTS API:用PHP编码GET请求


Google TTS API: Encoding GET request with PHP

—SOLVED—

问题解决了。解决方法很简单:

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请求到谷歌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编码(没有字节顺序标记)。谷歌TTS返回给我的是一个MP3文件,其中拼写"Umlaute"不像Übermensch,而是像A~1/4bermensch。此问题与客户端无关。

我认为谷歌期待一个ASCII字符串,这可能是我的问题?但是,当我在浏览器中手动输入GET行时,它会正确地拼写所有内容。参见:

stackoverflow - Google TTS API for Arabic, Chinese and Greek

谢谢你的帮助!

您必须将编码URL参数&ie=utf-8和python文件本身的编码设置为:#coding: utf-8,并确保使用utf-8编码(而不是iso-8859-1)保护.py文件。