2016-09-17 55 views
0

我希望能夠編碼和解碼使用JavaScript或jQuery的所有以下字符...如何編碼和解碼JavaScript或jQuery中的所有特殊字符? !

〜!@#$%^ * &()_ + |} {:?「> <,/ 「; [] \ = - `

我試圖用這個編碼他們...

var cT = encodeURI(oM); // oM holds the special characters 
cT = cT.replace(/[!"#$%&'()*+,.\/:;<=>[email protected][\\\]^`{|}~]/g, "\\\\$&"); 

哪個不對其進行編碼,或逃避他們,而,但後來我試圖做此相反...

decodeURIComponent(data.convo.replace(/\+/g, ' ')); 

但是,它不會以任何方式出現。

我爲jquery構建了一個聊天插件,但如果有人輸入特殊字符,腳本就會崩潰。我希望特殊字符能夠被編碼,然後當它們被從數據庫中拉出時,它們應該被解碼。在數據返回到ajax請求之前,我嘗試在PHP中使用urldecode,但它出現了可怕的錯誤。

我認爲存在一些編碼和解碼所有特殊字符的功能。

哦,一個需要注意的是,我用html元素包裝每個消息,所以我認爲解碼需要在服務器端完成,在消息被封裝之前,或者能夠知道何時忽略有效的html標記並解碼用戶想要鍵入的其他字符。

我編碼/逃避他們錯了開始?

這就是爲什麼結果是可怕的?

+0

在那裏它會崩潰?這些字符中的很多在html中都是有效的。這聽起來像是一個XY問題 – charlietfl

回答

0

這是在JavaScript

//Note that i have escaped the " in the string - this means it still gets processed 
var exampleInput = "Hello there h4x0r [email protected]#$%^&*()_+|}{:\"?><,./';[]\=-`"; 
var encodedInput = encodeURI(exampleInput); 
var decodedInput = decodeURI(encodedInput); 
console.log(exampleInput); 
console.log(encodedInput); 
console.log(decodedInput); 

很簡單,只需編碼和解碼的輸入。如果你的腳本中有其他東西被破壞,這意味着你不會剝離你正在處理的東西。很難提供準確的答案,因爲您可以看到編碼和解碼URI標準不會使事情崩潰。只有不正確地處理這些內容纔會導致問題。

當你在HTML中輸出內容時,你應該編碼HTML實體。

引用此主題Encode html entities in javascript如果您需要實際編碼在HTML內安全顯示。

上的HTML實體是如何工作的一個額外的參考可以在這裏找到:W3 Schools - HTML EntitiesW3 Schools - HTML Symbols