将%编码的字符转换为“正常”值

时间:2011-06-27 12:56:59

标签: java character-encoding

我正在使用NxParser库阅读文本文件(RDF)。

我收到很多'百分比编码'字符。我的问题有两个:

  1. 我应该用编码保存单词并在我想要显示它们时“解码”它们,或者我应该解码它们然后存储它们(我使用MySQL存储数据(如果这有任何区别) )

  2. 如何解码保留字符,我一直在尝试找到一个可以接受输入的库,然后打印出相同单词的“漂亮”版本

  3. 我尝试将其中一些字符替换为“正常”等效字符,如someString.replaceAll("%28","(").replaceAll("%29",")。这样可以正常工作,但当然编写时间很长,也许运行速度慢(如果调用了大量的replaceAll())。

4 个答案:

答案 0 :(得分:3)

我认为您想使用java.net.URLDecoder来解码%编码的元素。对此的补充当然是java.net.URLEncoder,它将特殊字符编码为%elements。

答案 1 :(得分:1)

  

我应该使用编码保存单词并在我想要显示它们时“解码”它们吗?

我会将它们保存为“未编码”并在您想要显示它们时进行编码。 (不同(未来?)显示机制可能需要不同的编码!)

  

如何解码保留字符,我一直在尝试找到一个可以输入一些内容的库,然后打印出同一个字的“漂亮”版本

您应该使用URLDecoder来实现此目的。

示例:

System.out.println(URLDecoder.decode("Hello %28 world", "UTF-8"));

<强>输出:

Hello ( world

答案 2 :(得分:1)

  1. 最好保存解码后的值 由于您的值存储在数据库中,因此无需对它们进行编码。具有实际解码值而不是较不可读的编码版本将更清楚。根据要求,您可以在将它们用于某处之前再次对这些值进行编码。
  2. 使用java.net.URLDecoder解码这些值

答案 3 :(得分:1)

您有一个“URL编码”字符串。试试这个:

import java.net.URLDecoder;

String someString = "%28test%29";
String decoded = URLDecoder.decode(url, "UTF-8");
System.out.println(decoded); // "(test,"