2012-02-14 62 views
0

我已經使用java腳本的轉義函數來編碼java腳本字符串。但結果似乎是一個奇怪它由以下字符:編碼java腳本字符串的正確方法

%3CBitte%20w%E4hlen%3E 

...的字符串:

Bitte wählen 

...這是一個德國的句子。我需要輸出爲Bitte wählen

下面的代碼可以幫助你瞭解清楚

var temp = escape(String(<Bitte wählen>)); 
+0

這最後的代碼示例JavaScript不。 – 2012-02-14 13:13:17

+1

轉義不適用於編碼。這是爲了逃避特殊的URL字符,你可以通過閱讀文檔輕鬆看到。你想要編碼的是什麼?你的示例字符串在編碼之前和之後是相同的,所以它沒有任何意義。 – 2012-02-14 13:13:34

+0

你的問題是什麼?你編碼的字符串,但你似乎很驚訝它包含「怪異」的字符 - 你期待'逃生'做什麼? – pimvdb 2012-02-14 13:17:20

回答

0

這真不明白你的意思。

要轉義JavaScript中的任何字符,請使用read up on JavaScript character escape sequences或僅使用mothereff.in/js-escapes。該頁面告訴你,在JavaScript中,'Bitte wählen'可以寫爲'Bitte w\xe4hlen'甚至'\x42\x69\x74\x74\x65\x20\x77\xe4\x68\x6c\x65\x6e'

+0

我需要轉義給定字符串中的特殊字符 – Sindhe 2012-02-14 13:23:21

+0

@Sindhe使用JavaScript? (我問,因爲你的文章中的最後一個代碼示例不是JavaScript。)查看我鏈接到的工具的源代碼:https://github.com/mathiasbynens/mothereff.in/blob/master/ js-escapes/eff.js – 2012-02-14 13:24:19

+0

好的我感謝您的幫助。 – Sindhe 2012-02-14 13:38:56

0
function URLDecode (encodedString) { 
    var output = encodedString; 
    var binVal, thisString; 
    var myregexp = /(%[^%]{2})/; 
    while ((match = myregexp.exec(output)) != null 
      && match.length > 1 
      && match[1] != '') { 
    binVal = parseInt(match[1].substr(1),16); 
    thisString = String.fromCharCode(binVal); 
    output = output.replace(match[1], thisString); 
    } 
    return output; 
} 


alert(URLDecode("%3CBitte%20w%E4hlen%3E"));​ // <Bitte wählen> 

(從here採取代號)

演示:http://jsfiddle.net/karim79/nnRpn/