xml - StreamResult - 绕过空间错误

发布于 2024-12-17 11:17:27 字数 418 浏览 0 评论 0 原文

我刚刚遇到一个有趣的 bug。我尝试使用 user.home 来保存路径;问题是 win xp 中的 user.home 是以

X:\文档和设置\

...确保空格取代其位置。异常说

java.io.FileNotFoundException: C:\Documents%20and%20Settings ...

所以,正如我所见,所有空格都被替换为“%”;我认为这是一个编码问题,但我不太确定。错误“5077403”页面不提供任何解决方法;但我希望应该有一些?

I've just faced an interesting bug. I tried to use user.home for saving path; The thing is the user.home in win xp is starting with

X:\Documents and Settings\

... sure the spaces take their place. The exception says

java.io.FileNotFoundException: C:\Documents%20and%20Settings ...

... so, as I can see, all spaces are replaced with '%'; I suppose it is an encoding problem but I am not pretty sure. The bug "5077403" page doesn't provide any work around; But I hope there should be some?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

壹場煙雨 2024-12-24 11:17:27

尝试更新您正在使用的 XML 库的版本。根据您引用的错误报告,它被标记为从 Java 1.5 开始已修复。

您看到的 % 实际上是有效的 URL 编码 - %20 代表空格。

另请参阅我在我的个人博客文章顶部发布的有关这些库版本的一些详细信息,网址为 http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html

Try updating the versions of the XML libraries you're using. Per the bug report you referenced, it is marked as fixed as of Java 1.5.

The %'s you're seeing are actually a valid URL encoding - with %20 representing a space.

Please see also some of the details I have posted around the versions of these libraries on the top of my personal blog post at http://blogger.ziesemer.com/2009/01/xml-and-xslt-tips-and-tricks-for-java.html .

少女七分熟 2024-12-24 11:17:27

一种技巧(应该适用于大多数 Win XP 系统)是使用类似以下内容:

String homeDir = System.getProperty("user.home");
homeDir = homeDir.replace("Documents and Settings", "DOCUME~1");

如果代码碰巧在 Windows 7 或非 Windows 环境上运行,这将使 homeDir 保持不变。

One hack (that should work on most Win XP systems) is to use something like this:

String homeDir = System.getProperty("user.home");
homeDir = homeDir.replace("Documents and Settings", "DOCUME~1");

This will leave homeDir intact if the code happens to be running on Windows 7 or a non-Windows environment.

唯憾梦倾城 2024-12-24 11:17:27

此错误最简单、最正确的修复/解决方法是使用解码来替换结果系统 ID。

streamResult.setSystemId(java.net.URLDecoder.decode(streamResult.getSystemId(), "UTF-8"));

这将解码系统 ID 并用空格替换 %20。

The easiest and most rightful fix/ workaround for this bug is using decoding to replace the results system id.

streamResult.setSystemId(java.net.URLDecoder.decode(streamResult.getSystemId(), "UTF-8"));

This will decode the system Id and replace %20 with spaces.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文