我无法相信Java YET中没有解决这个问题。
我见过Android: howto parse URL String with spaces to URI object?,第一个答案代表了我的问题。
我有一个包含文件位置的字符串。这可以是系统中的文件(/ ...或c:....)或URL(http:// .....,ftp:// ....等)如果文件是在系统或网址中指定预先知道。
要区分我使用
new URI(string)
然后问:
uri.isAbsolute()
这很好......但是猜猜看 - 如果路径有空格我会得到异常! (java.net.URISyntaxException)所以要解决这个问题,我所做的是初步的:
URLEncoder.encode(string, "UTF-8");
但现在,猜猜看 - 如果我收到“http:// ..”,所有特殊字符都会被替换,现在“isAbsolute()”不会将其识别为绝对URI。
当然我可以做:
string.replace(" ", "%20")
但是......如果这个名字有一个与空间不同的奇怪字符,例如中文或法文字符,会发生什么?我是否必须自己更换它们?我想Java应该有更高层次的处理这种情况的东西。这是一个非常常见的问题,但我找不到合适的答案。