在 Web 應用程式上要做關鍵字搜尋時,用的是自製的搜尋元件,前端與後端都是自製的。一直以來都沒有什麼問題,而這次的新案子測試人員發現罕用字出現了問題。
輸入關鍵字,查詢出來顯示時還是正常的,點選需要的資料帶入 textbox 時,罕用字卻變成了 &#xxxxx; 這樣的型式 (xxxxx 是10進位數字)
嘗試了呼叫 unescape、decodeURI、decodeURIComponent 都無法處理
後來只好問 google,找到一些資料之後,寫成以下的 function,提供出來給大家參考:
//--------------------------------------------
// 將字串裡的 unicode 換成文字
//--------------------------------------------
function ConvertUnicode(str)
{
// 先處理 \uXXXX 這種型式的
str = unescape(str);
// 然後再處理 &#XXXXX; 這種型式的
var regexp = /&#[0-9]+;/g;
var match = regexp.exec(str);
while (match !== null)
{
var s = String.fromCharCode(match[0].replace(/[&#;]/g, ""));
str = str.replace(new RegExp(match[0], "g"), s);
match = regexp.exec(str);
}
return str;
}