我有一个Servlet,需要写出具有用户可配置名称的文件。我正在尝试使用URI编码正确地转义特殊字符,但是JRE似乎会自动将编码的正斜杠%2F
转换为路径分隔符。
例:
File dir = new File("C:\Documents and Setting\username\temp");
String fn = "Top 1/2.pdf";
URI uri = new URI( dir.toURI().toASCIIString() + URLEncoder.encoder( fn, "ASCII" ).toString() );
File out = new File( uri );
System.out.println( dir.toURI().toASCIIString() );
System.out.println( URLEncoder.encode( fn, "ASCII" ).toString() );
System.out.println( uri.toASCIIString() );
System.out.println( output.toURI().toASCIIString() );
输出为:
file:/C:/Documents%20and%20Settings/username/temp/
Top+1%2F2.pdf
file:/C:/Documents%20and%20Settings/username/temp/Top+1%2F2.pdf
file:/C:/Documents%20and%20Settings/username/temp/Top+1/2.pdf
实例化新的File对象后,该%2F
序列会自动转换为正斜杠,并且最终得到错误的路径。有人知道解决此问题的正确方法吗?
问题的核心似乎是
uri.equals( new File(uri).toURI() ) == FALSE
%2F
URI中有时。
我打算只逐字使用URLEncoded字符串,而不是尝试使用File(uri)
构造函数。
在new File(URI)
构建了基于由获得的路径上的文件URI#getPath()
,而不是你-
什么expected-
URI#getRawPath()
。这看起来像“通过设计”功能。
您有2个选择:
URLEncoder#encode()
在fn
两次(注:encode()
不是encoder()
)。new File(String)
代替。问题内容: 这段代码使我凝视了几分钟: (这里的第137行) 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 它不是一个keyword,而是一个label。 用法:
The Python Imaging Library uses a plug-in model which allows you to add your own decoders to the library, without any changes to the library itself. Such plug-ins usually have names like XxxImagePlugi
在尝试让Liberty容器工作时,我遇到了以下问题。 对于数据库连接,我在server.xml中有一个像这样的AuthData部分: 当我试图用未编码的密码运行服务器时,数据库连接按预期工作,但是当密码被编码时,我得到这条消息:连接被拒绝(连接被拒绝)。错误代码=-4499,SQL State = 08001 dsra 0010 e:SQL State = 08001,错误代码=-4499 在设置
我有一个编码为base64的SVG文件,我想用ImageView显示图像。这是我尝试过的: 但是decodedByte总是返回null。 附注: 此代码适用于jpeg图像。 如果Bas64字符串包含Bas64前缀("data: Image/svg xml; Bas64,"或"data: Image/jpeg; Bas64,),则decdedByte也总是返回null Bas64字符串是正确的(它在
问题内容: 我有以下代码: 在我的Documents文件夹中,有一个名为“öß.pdf”的文件。这是Java 6下的输出: 但是这是Java 7下的输出: 请特别注意,返回由!! 返回的文件。是什么赋予了?有没有什么办法解决这一问题?这似乎很像Java 7错误… 问题答案: 在Oracle的帮助下,我们发现了一种解决方法:未在Eclipse中(以及从JNLP或其他任何地方启动时)将环境变量设置为。
问题内容: 在W3 Schools URL编码网页 上看到,它说应该被编码为,并且应该被编码为。 我已经尝试了和,但是上述方法都没有正确执行: 由于某些原因,电子邮件地址正确但不能空格,并且货币而不是电子邮件地址。 我应该如何编码这两个参数,以与w3schools所说的正确(或w3schools错误)相一致? 问题答案: 尽管我认为@fge的答案是正确的,但是由于我使用的是基于W3Schools文