最近在H5 做移動(dòng)端的時(shí)候这敬,遇到了一個(gè)問題,就是一個(gè)文本框里面肋乍,用戶
輸入了自己的工作內(nèi)容鹅颊、會(huì)議記錄等等∧乖欤客戶那邊反饋,提交失斆场觅闽!經(jīng)驗(yàn)問題,這是由于用戶使用了“空格”涮俄,是的蛉拙,有些奇怪,空格不是很常見的嗎彻亲?
問題是我登錄后臺(tái)查看報(bào)文時(shí)發(fā)現(xiàn)一個(gè)很奇怪的現(xiàn)象:\u00a0 按理來說孕锄,只要編碼轉(zhuǎn)換一下就可以解決的。這個(gè)不行苞尝,最后使用 正則匹配 替換掉就好了畸肆。
解決關(guān)于 \u00a0 特殊空格的值。
replace(/\u00a0|\s+/ig, '');
/*
* 轉(zhuǎn)換特殊字符*/
/*編碼*/
encode:function(str) {
var patt=/[\ud800-\udbff][\udc00-\udfff]/g; // 檢測(cè)utf16字符正則
str = str.replace(patt, function(char){
var H, L, code;
if (char.length===2) {
H = char.charCodeAt(0); // 取出高位
L = char.charCodeAt(1); // 取出低位
code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00; // 轉(zhuǎn)換算法
return "&#" + code + ";";
} else {
return char;
}
});
var entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '\"',
// "'": ''',
"/": '/',
"$":'$',
// "\\":"\\"
};
// encodeURIComponent該方法是為了兼容后端不兼容\的問題
// return encodeURIComponent(String(str).replace(/[&<>"\/$]/g, function (s) {
// return entityMap[s];
// }));
var delStr = String(str).replace(/[&<>"\/$]/g, function (s) {
return entityMap[s];
});
// (/\\u00a0|\s+/ig, '') 就是這個(gè)解決了 u00a0 的空格bug
return delStr.replace(/\n/g,'\\n').replace(/\\u00a0|\s+/ig, '');
},