Hello, Have a question, wat makes the case special? What makes it illegal? is this a general problem with unicode characters, outside of BMP, or is it an illegal sequence or something else? What about latin9 euro sign for example? Do we need to document somewhere that only ascii is allowed?
Could we use (or comment) the character with \u notation in the test source, so it stays ascii (just to be sure and also to make the byte sequence apparent) Finally, is the Test Class named wrong? (...Chart..) > public class FileObjectEscapeChartInPathTest { > private static final String REL_PATH_GREAT = > "src/test/resources/test-data/好.txt"; Gruss Bernd -- http://bernd.eckenfels.net ________________________________ Von: ggreg...@apache.org <ggreg...@apache.org> Gesendet: Sonntag, März 28, 2021 11:31 PM An: comm...@commons.apache.org Betreff: [commons-vfs] branch master updated: IllegalArgumentException: Bad escape for Chinese characters in FileObject path #168. This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-vfs.git The following commit(s) were added to refs/heads/master by this push: new 7c56b5a IllegalArgumentException: Bad escape for Chinese characters in FileObject path #168. 7c56b5a is described below commit 7c56b5ab5e7826ddc443936d11145ee1be077e95 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sun Mar 28 17:31:40 2021 -0400 IllegalArgumentException: Bad escape for Chinese characters in FileObject path #168. --- commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java | 2 +- .../java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java | 2 -- src/changes/changes.xml | 3 +++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java index fce79ac..1f5e2d2 100644 --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java @@ -307,7 +307,7 @@ public interface FileObject extends Comparable<FileObject>, Iterable<FileObject> * @since 2.7.0 */ default URI getURI() { - return URI.create(getName().getURI()); + return URI.create(URI.create(getName().getURI()).toASCIIString()); } /** diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java index 8419dcc..66ab4b3 100644 --- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java +++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java @@ -34,10 +34,8 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.function.FailableFunction; import org.apache.commons.vfs2.impl.StandardFileSystemManager; -import org.junit.Ignore; import org.junit.Test; -@Ignore public class FileObjectEscapeChartInPathTest { private static final String REL_PATH_GREAT = "src/test/resources/test-data/好.txt"; diff --git a/src/changes/changes.xml b/src/changes/changes.xml index cac0154..56c4001 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -56,6 +56,9 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Boris Petrov, Gary Gregory, Max Kellermann"> Fix NPE when closing a stream from a different thread #167. See also #166. </action> + <action type="fix" dev="ggregory" issue="VFS-798" due-to="XenoAmess, Gary Gregory"> + IllegalArgumentException: Bad escape for Chinese characters in FileObject path #168. + </action> <!-- UPDATES --> <action type="update" dev="ggregory" due-to="Arturo Bernal"> Replace construction of FileInputStream and FileOutputStream objects with Files NIO APIs. #164.