问题简介:
我有一个文件“лл.txt”。当我将它的名称读入字符串时,它变成“%D0%BB%D0%BB.txt”。然后,如果我想打开并读取该文件,它找不到它
// filename contains "%D0%BB%D0%BB.txt"
in = new BufferedReader(new FileReader(new File(filename))); // File not found
但如果我给出原来的名字,它就完美了
in = new BufferedReader(new FileReader(new File("лл.txt"))); // ok
所以问题是如何从“%D0%BB%D0%BB.txt”中获取“лл.txt”? 快速搜索让我找到了这个
byte[] bytes = str.getBytes( Charset.forName("UTF-8" ));
str = new String( bytes, Charset.forName("UTF-8") );
但这对我不起作用
最佳答案
它看起来是使用 utf-8 字符集编码的 URL。您可以从以下示例转换中得到提示:
System.out.println(URLEncoder.encode("лл.txt", "utf-8")); // Gives %D0%BB%D0%BB.txt
System.out.println(URLDecoder.decode("%D0%BB%D0%BB.txt", "utf-8")); // Gives лл.txt
关于java - Java 中的 UTF-8 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976535/