Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:MediaPlayer可以';t加载带有印地语字符的URL_Android_Url_Unicode_Hindi - Fatal编程技术网

Android 安卓:MediaPlayer可以';t加载带有印地语字符的URL

Android 安卓:MediaPlayer可以';t加载带有印地语字符的URL,android,url,unicode,hindi,Android,Url,Unicode,Hindi,运行此代码时引发异常。如果您将URL中的印地语字符替换为“Hello”,则可以很好地播放文件 当我在浏览器中加载这个URL(带有印地语字符)时,它就可以正常运行了 发生什么事了 这是我的密码: MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(getResources().getString(R.string.test)); mediaPlayer.prepare(); 以下是字符串资源定义:

运行此代码时引发异常。如果您将URL中的印地语字符替换为“Hello”,则可以很好地播放文件

当我在浏览器中加载这个URL(带有印地语字符)时,它就可以正常运行了

发生什么事了

这是我的密码:

MediaPlayer mediaPlayer = new MediaPlayer();

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

mediaPlayer.prepare(); 
以下是字符串资源定义:

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

我认为unicode字符在URL中是不合法的,除非你对它们进行编码。以下是规格:
我认为unicode字符在URL中是不合法的,除非你对它们进行编码。以下是规格:

+1 tdammers是正确的,您不能在数据中使用非ASCII字符

你可以把它们放在一个盒子里,这就是:

http://translate.google.com/translate_tts?q=आलू
浏览器通常支持IRIs(有一些限制),但许多其他工具不支持(显然包括Android媒体播放器)。对于这些工具,您必须将IRI转换为URI。这是通过以下方式实现的:

  • 在地址的主机名部分提取任何非ASCII字符,并使用算法对其进行编码

  • 在地址的其他部分(如这里的查询)使用任何非ASCII字符,并对其UTF-8字节表示形式进行编码

这将为您提供:

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

在任何地方都可以用。(并将这样的URI粘贴到浏览器中,通常会以IRI格式显示,并在地址栏中显示印地语。)

+1 tdammers是正确的,您不能在浏览器中使用非ASCII字符

你可以把它们放在一个盒子里,这就是:

http://translate.google.com/translate_tts?q=आलू
浏览器通常支持IRIs(有一些限制),但许多其他工具不支持(显然包括Android媒体播放器)。对于这些工具,您必须将IRI转换为URI。这是通过以下方式实现的:

  • 在地址的主机名部分提取任何非ASCII字符,并使用算法对其进行编码

  • 在地址的其他部分(如这里的查询)使用任何非ASCII字符,并对其UTF-8字节表示形式进行编码

这将为您提供:

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

在任何地方都可以用。(并将这样的URI粘贴到浏览器中,通常会以IRI格式显示,地址栏中会显示印地语。)

我从其他人那里找到了解决方案。您必须先对文本进行编码。然后必须在“ie”参数中添加encode方法。如果您将mediaplayer的url设置为可以播放所需的单词,则将显示您的文本。

我已从其他人那里找到解决方案。您必须先对文本进行编码。然后必须在“ie”参数中添加encode方法。如果您将mediaplayer的url设置为可以播放所需单词,则会显示您的文本。

如果您尝试将mediaplayer.setDataSource()的编码uri与%-编码一起使用,则它仍然不会播放该MP3。但如果你把它粘贴到Chrome或Firefox上,它就会像你说的那样转换并播放@mellog:如果您找到了在mediaplayer中使用unicode字符播放url的任何解决方案,请提供解决方案。很抱歉,没有找到解决方案-如果您尝试使用带%-编码的编码uri播放mediaplayer.setDataSource(),它仍然不会播放MP3。但如果你把它粘贴到Chrome或Firefox上,它就会像你说的那样转换并播放@mellog:如果您找到了在mediaplayer中播放带有unicode字符的url的解决方案,请提供解决方案。很抱歉,没有找到解决方案-刚刚放弃Hi mellog,您找到了在mediaplayer中使用该url播放声音的解决方案吗?我也面临着同样的问题。嗨,你找到了在mediaplayer中使用该URL播放声音的解决方案吗?我也面临同样的问题。