【问题标题】:UTF-8 convertion in JavaJava中的UTF-8转换
【发布时间】:2014-04-10 00:37:35
【问题描述】:

关于问题的简要说明:

我有一个文件“лл.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") );

但它对我不起作用

【问题讨论】:

  • 看来%D0%BB%D0%BB 是转义码,所以不是编码问题,而是取消转义。
  • 而且它看起来像它的 Unicode,而不是 UTF-8。
  • 你好,那我该如何避免它呢?
  • 对不起,我认为 unicode == utf-8。我会改标题
  • 不,我看到它确实是 UTF-8。转义 UTF-8。

标签: java android utf-8 url-encoding


【解决方案1】:

它看起来是用 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

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 2011-08-22
    • 2017-09-24
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多