1

このコードを実行すると、例外がスローされます。URLのヒンディー語を「Hello」に置き換えると、ファイルは問題なく再生されます。

このURL(ヒンディー語の文字を含む)をブラウザーにロードすると、問題なく再生されます。

どうしたの?

これが私のコードです:

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setDataSource(getResources().getString(R.string.test)); 

mediaPlayer.prepare(); 

文字列リソースdefは次のとおりです。

<string name="test">http://translate.google.com/translate_tts?q=आलू&lt;/string>
4

3 に答える 3

2

Unicode 文字は、エンコードしない限り、URL では合法ではないと思います。仕様は次のとおりです: https://www.rfc-editor.org/rfc/rfc1738

于 2011-03-22T09:06:06.323 に答える
1

+1 tdammers は正しく、非 ASCII 文字をURIに含めることはできません。

それらをIRIに含めることができます。これは次のとおりです。

http://translate.google.com/translate_tts?q=आलू

通常、ブラウザーは IRI をサポートしていますが (いくつかの制限があります)、他の多くのツールはサポートしていません (明らかに、Android メディア プレーヤーを含む)。これらのツールでは、IRI を URI に変換する必要があります。これは次の方法で行われます。

  • アドレスのホスト名部分の非 ASCII 文字を取得し、IDNアルゴリズムを使用してそれらをエンコードします。

  • アドレスの他の部分 (ここではクエリなど) の非 ASCII 文字を取得し、それらの UTF-8 バイト表現を % エンコードします。

これにより、以下が得られます。

http://translate.google.com/translate_tts?q=%e0%a4%86%e0%a4%b2%e0%a5%82

どこでも機能するはずです。(そして、このような URI をブラウザーに貼り付けると、通常、アドレス バーにヒンディー語を含む IRI 形式で表示されます。)

于 2011-03-22T20:53:36.720 に答える
1

私は他の人から解決策を見つけました。最初にテキストをエンコードしました。次に、「ie」パラメータにエンコード メソッドを追加する必要があります。テキストについては、mediaplayer の URL をhttp://translate.google.com/translate_tts?ie=UTF-8&q=%e0%a4%86%e0%a4%b2%e0%a5%82として設定すると再生されます希望の言葉。

于 2011-11-22T19:00:58.877 に答える