2011-06-27 52 views
2

我正在使用NxParser庫讀取文本文件(RDF)。將%編碼字符轉換爲「正常」值

我得到了很多'百分比編碼'字符。我的問題是雙重的:

  1. 我應該保存編碼和「解碼」他們的話時,我想顯示他們,或者我應該對其進行解碼,然後存儲它們(我使用MySQL來存儲數據(如果讓任何區別))

  2. 我如何解碼保留字符,我一直在試圖找到能夠採取一些輸入,然後打印出同一個詞的「好」版本的庫

我試着用他們的'正常值替換一些字符'相當於如此someString.replaceAll("%28","(").replaceAll("%29",")。這可以正常工作,但編寫起來很耗時,也可能運行緩慢(如果調用了大量的replaceAll())。

+0

謝謝大家 – Ankur

回答

1

我應該保存編碼和「解碼」他們的話時,我想顯示它們[...]

我會救他們「未編碼」,當你想顯示他們對其進行編碼。 (不同的(未來呢?)顯示機制可能需要不同的編碼!)

我如何解碼保留字符,我一直在試圖找到能夠採取一些輸入,然後打印出庫「同一個詞

的好」的版本,您應該使用URLDecoder用於此目的。

例子:

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

輸出:

Hello (world 
1
  1. 這將是最好的保存解碼值。
    由於您的值存儲在數據庫中,因此不需要保留它們的編碼。具有實際的解碼值而不是較不可讀的編碼版本會更清楚。根據需要,您可以在使用它們之前再次對這些值進行編碼。
  2. 使用java.net.URLDecoder你有字符串 「編碼的URL」 解碼這些值
+0

「這將是最好的保存解碼值」......我想知道你是否有任何特別的原因。 – Ankur

+0

編輯答案。 – wjans

+0

謝謝,這就是我已經走了,因爲它現在更適合我。 – Ankur

1

。試試這個:

import java.net.URLDecoder; 

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