2014-11-04 43 views
8

我在我的頁面上有一個表單,用戶可以鍵入一些文本並提交。然後將文本發送到服務器(Node.js頂部的REST API)並保存到DB(postgres)。如何從字符串中刪除控制字符?

問題是一些奇怪的字符(控制字符)偶爾會保存到數據庫 - 例如轉義控制字符(^ [)或退格控制字符(^ H)。通常它不會破壞任何東西,因爲這些字符是不可見的,所以html呈現正確。但是,當我爲RSS閱讀器提供XML內容時,由於這些控制字符(它們在刪除它們後起作用),它們(閱讀器)返回「格式不正確的XML」。

我的問題是我如何從客戶端(javascript)或服務器級別(javascript/node.js)的字符串中刪除這些字符?


我已經找到了正確的答案在這裏:removing control characters in utf-8 string

s.replace(/[\x00-\x1F\x7F-\x9F]/g, ""); 
+1

由...只是這樣做解碼?取出字符串,使用字符串替換函數用「'替換任何非法字符(或字符範圍),然後保存。 – 2014-11-04 17:39:06

+0

檢查這個主題http://stackoverflow.com/questions/4374822/javascript-regexp-remove-all-special-characters – Asik 2014-11-04 17:40:13

+0

使用CDATA來包裝這樣的數據 – 2014-11-04 17:42:14

回答

1

我有類似的問題,這裏我選擇的解決方案。

我編碼使用encodeURIComponent方法(變量名)用戶字符串數據,然後保存,然後在顯示我使用decodeURIComponent(變量名)

+1

這是行不通的,因爲encodeURI..'只是編碼控制字符和'decodeURI..'對它們進行解碼 – user606521 2014-11-05 09:40:27

+0

感謝您的評論,請你解釋一下,爲什麼不編碼和解碼工作? – Mateen 2014-11-06 19:34:10

+0

因爲它只是編碼不可見的字符,然後再解碼它們,所以實際上沒有任何變化 - 我將在我的內容中有那些不可見的字符 - 我想從內容中刪除它們... – user606521 2014-11-07 09:32:31