2015-01-12 33 views
0

我有一個字符串奇編碼需要兩個解碼得到正確

"R&B%2FSoul" 

這似乎是URL編碼。但解碼會產生奇怪的結果:

URI.unescape("R&B%2FSoul") => "R&B/Soul" 

它似乎照顧的一部分,但不是全部。如果我做

CGI::unescapeHTML("R&B%2FSoul") => "R&B%2FSoul" 

所以序,以獲得正確的價值出來,我需要兩次解碼

CGI.unescape(CGI::unescapeHTML("R&B%2FSoul")) => "R&B/Soul" 

任何人都明白這是怎麼回事呢?謝謝!

回答

2

我不是專家,但它看起來像是在該字符串中有混合的編碼,因此需要使用兩種不同的技術進行解碼。你在哪裏得到它?如果是URL(%)的編碼,它應該是這樣的可能:

R%26B%2FSoul 

由於&%26

+0

在互聯網的荒野中有各種奇怪的雙/三/ n編碼的字符串。當人們不注意時,我常常寫蜘蛛並且一直遇到那些東西。 –

0

%nn是一個URI編碼值,而&...;是一個HTML編碼值。我期望看到&%26,因爲這是一個可變分隔符。