// ------------------------------------------------------------- // 一般驗證處理函式 // ------------------------------------------------------------- // 身分證字號檢查 // begin ... [ var IDN_STR = "ABCDEFGHJKLMNPQRSTUVXYWZIO"; var NUM_STR = "0123456789"; function isValidIdNoForTest(IdNo) { var bValid = true; if (IdNo != null && IdNo.length == 10) { IdNo = Trim(IdNo.toUpperCase()); if (IDN_STR.indexOf(IdNo.substr(0, 1)) < 0) { bValid = false; } else { if ((IdNo.substr(1, 1) != "1") && (IdNo.substr(1, 1) != "2")) { bValid = false; } } } else { bValid = false; } return bValid; } function isValidIdNo(IdNo) { var bValid = true; if (IdNo != null && IdNo.length == 10) { IdNo = Trim(IdNo.toUpperCase()); if (!chkPID_CHAR(IdNo)) { return false; } var iChkNum = getPID_SUM(IdNo); if (iChkNum % 10 != 0) { var iLastNum = IdNo.substr(9, 1) * 1; for (i = 0; i < 10; i++) { var xRightAlpNum = iChkNum - iLastNum + i; if ((xRightAlpNum % 10) == 0) { bValid = false; break; } } } } else { bValid = false; } return bValid; } // 身分證字號檢查 - 檢查合法字元 function chkPID_CHAR(sPID) { sPID = sPID.toUpperCase(); var bValid = true; var iPIDLen = String(sPID).length; var sChk = IDN_STR + NUM_STR; for (i = 0; i < iPIDLen; i++) { if (sChk.indexOf(sPID.substr(i, 1)) < 0) { bValid = false; break; } } if (bValid) { if (IDN_STR.indexOf(sPID.substr(0, 1)) < 0) { bValid = false; } else { if ((sPID.substr(1, 1) != "1") && (sPID.substr(1, 1) != "2")) { bValid = false; } else { for (var i = 2; i < iPIDLen; i++) { if (NUM_STR.indexOf(sPID.substr(i, 1)) < 0) { bValid = false; break; } } } } } return bValid; } // 身分證字號檢查 - 累加檢查碼 function getPID_SUM(sPID) { var iChkNum = 0; // 第 1 碼 iChkNum = IDN_STR.indexOf(sPID.substr(0, 1)) + 10; iChkNum = Math.floor(iChkNum / 10) + (iChkNum % 10 * 9); // 第 2 - 9 碼 for (var i = 1; i < sPID.length - 1; i++) { iChkNum += sPID.substr(i, 1) * (9 - i); } // 第 10 碼 iChkNum += sPID.substr(9, 1) * 1; return iChkNum; } // ] ... end //email檢查 function validateEmail(email) { var emailPattern = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9._-])+/; return emailPattern.test(email); } //email檢查 防止跟struts內建validator方法名字衝突 function checkEmail(email) { var emailPattern = /^([a-zA-Z0-9._-]){1,}\@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9._-])+([a-zA-Z0-9._-]){1,}$/; return emailPattern.test(email); } // ------------------------------------------------------------- // 網頁元件處理函式 // ------------------------------------------------------------- // 取得 Requesst URL 的 Query String function getUrlParameter(name) { name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); var results = regex.exec(location.search); return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); } // Span / Div 物件的展開及收闔處理 // begin ... [ function procDivShow(element) { if (typeof element == "string") { element = document.getElementById(element); } if (element.style.display == "none") { element.style.display = "inline"; } else { element.style.display = "none"; } } // ] ... end // Checkbox 全選 / 全部取消 的處理 // begin ... [ function selectAll(obj, elements) { if (typeof obj == "string") { obj = document.getElementById(obj); } if (typeof elements == "string") { elements = document.getElementsByName(elements); } for (i = 0; i < elements.length; i++) { elements[i].checked = obj.checked; } } // ] ... end // ------------------------------------------------------------- // 字串處理函式 // ------------------------------------------------------------- // 將字串轉換為數值 // 由於 JavaScript 的 parseFloat() 內定會將 0 開頭的字串當成八進位處理, // 所以若要處理十進位則必須自行處理轉換的動作 // begin ... [ function parseNumber(value) { if (Trim(value).length == 0) { return ""; } // 刪除字串開頭的 "0" var zeroIndex = 0; while (value.charAt(zeroIndex) == "0") { zeroIndex++; } value = value.substring(zeroIndex, value.length); if (value == "") { value = "0"; } if (value.charAt(0) == ".") { value = "0" + value; } if (isNaN(value)) { return ""; } else { return parseFloat(value); } } // ] ... end // 字串處理 - 在字串左邊補上指定字元至指定長度 // begin ... [ function leftPad(str, size, padChar) { str = "" + str; // 如果傳入的為數字先轉為字串 if (padChar == null || padChar == "") { padChar = " "; } while (str.length < size) { str = padChar + str; } return str; } // ] ... end // 字串處理 - 在字串右邊補上指定字元至指定長度 // begin ... [ function rightPad(str, size, padChar) { str = "" + str; // 如果傳入的為數字先轉為字串 if (padChar == null || padChar == "") { padChar = " "; } while (str.length < size) { str = str + padChar; } return str; } // ] ... end // 字串處理 - 去除傳入字串左右之空白字元 // begin ... [ function Trim(STRING) { STRING = LTrim(STRING); return RTrim(STRING); } // ] ... end // 字串處理 - 去除傳入字串右邊之空白字元 // begin ... [ function RTrim(STRING) { while (STRING.charAt((STRING.length - 1)) == " ") { STRING = STRING.substring(0, STRING.length - 1); } return STRING; } // ] ... end // 字串處理 - 去除傳入字串左邊之空白字元 // begin ... [ function LTrim(STRING) { while (STRING.charAt(0) == " ") { STRING = STRING.replace(STRING.charAt(0), ""); } return STRING; } // ] ... end // 字串處理 - 字串是否以指定字串結尾 // begin ... [ function endWith(str1, str2) { if (str1 == null || str2 == null || str1 == "" || str2 == "") return false; var strLong = str1; var strShort = str2; if (str1.length < str2.length) { var strLong = str2; var strShort = str1; } for (i = 0; i < strShort.length; i++) { if (strShort.charAt(strShort.length - i - 1) != strLong.charAt(strLong.length - i - 1)) return false; } return true; } // ] ... end // ------------------------------------------------------------- // 日期處理函式 // ------------------------------------------------------------- // 檢查傳入之日期是否為有效日期 // // 參數: // dateValue - 日期, 可接受民國及西元日期 // // 回傳值: // 是 - true // 否 - false // // 範例: // isValidDate("0960229") - false // isValidDate("20070229") - false // isValidDate("0970229") - true // isValidDate("20080229") - true // // begin ... [ function isValidDate(dateValue) { return isValidDate(dateValue, false); } // ] ... end // 檢查傳入之日期是否為有效日期 // // 參數: // dateValue - 日期, 可接受民國及西元日期 // bBeforeROC - true 民國前 false 民國 // // 回傳值: // 是 - true // 否 - false // // begin ... [ function isValidDate(dateValue, bBeforeROC) { var isValid = true; var iValue = Trim(dateValue); var pDateType = iValue.length; if ((iValue.length != 8 && iValue.length != 7) || (isNaN(parseNumber(iValue)))) { isValid = false; } else { var nYear = 0; var nDay = parseNumber(iValue.substr((pDateType - 2), 2)); var nMon = parseNumber(iValue.substr((pDateType - 4), 2)) - 1; if (pDateType == 7) { if (bBeforeROC) { nYear = 1912 - parseNumber(iValue.substr(0, (pDateType - 4))); } else { nYear = parseNumber(iValue.substr(0, (pDateType - 4))) + 1911; } } else { nYear = parseNumber(iValue.substr(0, (pDateType - 4))); } var sDate = new Date(Date.UTC(nYear, nMon, nDay, 0, 0, 0)); if (!((sDate.getUTCFullYear() == nYear) && (sDate.getMonth() == nMon) && (sDate.getDate() == nDay))) { isValid = false; } } return isValid; } // ] ... end // 民國日期轉西元, 西元日期轉民國 // (若傳入民國日期, 僅可傳入民國後日期) // // 參數: // sDate - 民國或西元日期 // // 範例: // changeDateType("0961231") - "20071231" // changeDateType("20071231") - "0961231" // changeDateType("0960229") - "0960229" (日期不合法, 回傳原值) // changeDateType("20070229") - "20070229" (日期不合法, 回傳原值) // // begin ... [ function changeDateType(sDate) { sDate = Trim(sDate); if (!isValidDate(sDate)) { return sDate; } if (sDate.length == 7) { return leftPad(parseNumber(sDate.substring(0, 3)) + 1911, 4, "0") + sDate.substring(3, 5) + sDate.substring(5, 7); } else { if (sDate.length == 8) { return leftPad(parseNumber(sDate.substring(0, 4)) - 1911, 3, "0") + sDate.substring(4, 6) + sDate.substring(6, 8); } else { return sDate; } } } // ] ... end // 日期加減運算 // 往後為加, 往前為減 // // 參數: // sDate - 民國或西元日期 // nDay - 欲加減的天數 // // 回傳值: // 傳入 民國日期 - 計算後之民國日期 // 傳入 西元日期 - 計算後之西元日期 // // 範例: // calDay("0961231", 1) - "0970101" // calDay("20071231", 1) - "20080101" // calDay("0960101", 1) - "0960102" // calDay("20070101", 1) - "20070102" // calDay("0961211", -15) - "0961126" // calDay("20071211", -15) - "20071126" // // begin ... [ function calDay(sDate, nDay) { sDate = Trim(sDate); if (!isValidDate(sDate)) { return sDate; } var bChinese = false; if (sDate.length == 7) { bChinese = true; } var baseDate = sDate; if (bChinese) { baseDate = changeDateType(baseDate); } var theDate = new Date(parseNumber(baseDate.substring(0, 4)), parseNumber(baseDate.substring(4, 6)) - 1, baseDate.substring(6, 8), 0, 0, 0); var b = theDate.getDate(); b = b + nDay; theDate.setDate(b); if (bChinese) { return leftPad(theDate.getFullYear() - 1911, 3, "0") + leftPad(theDate.getMonth() + 1, 2, "0") + leftPad(theDate.getDate(), 2, "0"); } else { return leftPad(theDate.getFullYear(), 4, "0") + leftPad(theDate.getMonth() + 1, 2, "0") + leftPad(theDate.getDate(), 2, "0"); } } // ] ... end // 全形半形轉換 // begin ... [ function asc(text) { var asciiTable = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var big5Table = "%u3000%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; var result = ""; for (var i = 0; i < text.length; i++) { var val = escape(text.charAt(i)); var j = big5Table.indexOf(val); result += (((j > -1) && (val.length == 6)) ? asciiTable.charAt(j / 6) : text.charAt(i)); } return result; } function unAsc(text) { var asciiTable = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var big5Table = "%u3000%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; var result = ""; for (var i = 0; i < text.length; i++) { var val = text.charAt(i); var j = asciiTable.indexOf(val) * 6; result += (j > -1 ? unescape(big5Table.substring(j, j + 6)) : val); } return result; } // ] ... end //數字金額千位分隔 function numFormat(stringValue) { stringEnd = " "; n = ""; if (isNaN(stringValue)) { return ""; } else { stringValue = stringValue.toString(); if (stringValue.indexOf(".") != -1) { aa = stringValue.split("."); stringValue = aa[0]; stringEnd = "." + aa[1]; } stringValue = "" + eval(stringValue); len = stringValue.length; for (i = len - 1; i >= 0; i--) { n = stringValue.charAt(i) + n; if ((((len - i) % 3) == 0) && (i != 0)) { n = "," + n; } } return n + stringEnd; } } // 畫面清空 // begin ... [ function cleanForm() { for (i = 0; i < document.forms[0].length; i++) { obj = document.forms[0].elements[i]; if(obj.disabled != true && obj.readOnly != true){ switch(obj.type){ case "text": obj.value=""; break; case "textarea": obj.value=""; break; case "password": obj.value=""; break; case "radio": var objName = obj.getAttribute("name") elements = document.getElementsByName(objName) for (j = 0; j < elements.length; j++){ if(j==0) elements[j].checked=true else elements[j].checked=false } break; case "checkbox": obj.checked = false; break; case "select-one" : obj.options[0].selected = true; break; case "select-multiple" : while (obj.selectedIndex != -1){ indx = obj.selectedIndex; obj.options[indx].selected = false; } obj.selected = false; break; } } } } // 取得 Radio 控制元件所選取的項目的值 // begin ... [ function getRadioValue(elements) { if (typeof elements == 'string') elements = document.getElementsByName(elements); if (elements == null) return ""; var value = ""; for (i = 0; i < elements.length; i++) { if (elements[i].checked) value = elements[i].value; } return value; } // ] ... end // 設定 Radio 控制元件所選定的值 // begin ... [ function setRadioValue(elements, value) { if (typeof elements == 'string') elements = document.getElementsByName(elements); if (elements != null) { for (i = 0; i < elements.length; i++) { if (elements[i].value == value) elements[i].checked = true; } } } // ] ... end // 清空 Radio 控制元件的值 (取消選取) // begin ... [ function clearRadio(elements) { if (typeof elements == 'string') elements = document.getElementsByName(elements); if (elements != null) { for (i = 0; i < elements.length; i++) { if (elements[i].checked) elements[i].checked = false; } } } // ] ... end // 判斷姓名欄位 // Begin ... [ function isValidChineseName(str) { if (str.length >= 2 && isAllChineseChar(str)) return true; else return false; } // ] ... end // 判斷傳入的字串是否為中文 // Begin ... [ function isAllChineseChar(str) { var regEng = /([a-z]|[A-Z]|[0-9])$/i; var isValid = true; for (i = 0; i < str.length; i++) { if (isValid) { if (!(str.charCodeAt(i) >= 10000)) isValid = false; if (isValid && regEng.test(str.charAt(i))) isValid = false; } } return isValid; } // ] ... end // 判斷傳入之字串是否含有中文或全形英數符號 // begin ... [ function isContainChineseChar(str) { var regEng = /([a-z]|[A-Z]|[0-9])$/g; var bContain = false; for (i = 0; i < str.length; i++) { if (str.charCodeAt(i) >= 10000) { bContain = true; break; } } if (str.match(regEng)) { bContain = true; } return bContain; } // ] ... end // 檢查郵局帳號 // begin ... [ function isNotValidPostAccount(branch , account) { var isValid = false; var str=new Array("0","0","0","0","0","0","0","0","0","0","0","0","0","0"); for(var i=0;i<=account.length;i++) str[i]=account.charAt(i); if(branch == "7000010" && account.length <= 8){ if (str[7] == ((11-((str[0]*2 + str[1]*3 + str[2]*4 + str[3]*5 + str[4]*6 + str[5]*7 +str[6]*8 )%11))%10)) { isValid = false; } else { isValid=true; } } else if(branch == "7000021" && account.length <= 14){ if(str[6] == ((11-((str[0]*2 + str[1]*3 + str[2]*4 + str[3]*5 + str[4]*6 + str[5]*7)%11))%10)){ if (str[13] == ((11-((str[7]*2 + str[8]*3 + str[9]*4 + str[10]*5 + str[11]*6 + str[12]*7)%11))%10)) { isValid = false; } else { isValid = true; } } else { isValid = true; } } return isValid; } // ] ... end //判斷傳入之字串是否為純數字字元 //如為數字字元回傳true //如包含數字以外的字元回傳false //begin ... [ function isAllNumChar(txt){ re = /\D/; //\D代表純數字以外的字元 if (re.test(txt)){ return false; } else{ return true; } } //] ... end //檢核連絡電話 (數字、{()#}) function isValidTel(tel) { var TEL_STR = "0123456789{()#}"; var bValid = true; if (tel != null && tel.length >=7) { tel = Trim(tel.toUpperCase()); for (i = 0; i < tel.length; i++) { if (TEL_STR.indexOf(tel.substr(i, 1)) < 0) { bValid = false; break; } } } else { bValid = false; } return bValid; } //檢核預約取件預約代號 function isValidRevNo(revNo){ var revNoPattern = /^([R]+[E]+[V]+[0-9]{10})+/; return revNoPattern.test(revNo); } String.prototype.len = function() { return this.replace(/[^\x00-\xff]/g,"rr").length; } function unAscCode(text) { var asciiTable = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var big5Table = "%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; var result = ""; for (var i = 0; i < text.length; i++) { var val = text.charAt(i); var j = asciiTable.indexOf(val) * 6; result += (j > -1 ? unescape(big5Table.substring(j, j + 6)) : val); } return result; } /* 判斷瀏覽器版本 1. IE 版本 < 11 2. Firefox 版本 < 27 3. Chrome 版本 < 30 4. Safari 版本 < 7 */ function isValidBrowser() { var clientUserAgent = navigator.userAgent ; //alert(clientUserAgent); //console.log(clientUserAgent); var clientInfo = platform.parse(clientUserAgent); //alert(clientInfo.version); //console.log(clientInfo.version); var b = clientInfo.version.split("."); //alert(b); //console.log(b); if((clientInfo.name == "IE" && b[0] < 11) || (clientInfo.name == "Firefox" && b[0] < 27) || (clientInfo.name == "Chrome" && b[0] < 30) || (clientInfo.name == "Safari" && b[0] < 7 )){ return false; } else{ return true; } } //版本是否符合上述條件 function testVersion() { if (!isValidBrowser()) alert("為保護您的個人資料安全,本系統將自民國108年10月1日起全面停止支援 MAC OS X 10.8 、Windows XP、Vista等版本(含)以下的作業系統及IE10版本(含)以下的瀏覽器。 \r\n\r\n 【注意】:\r\n您目前使用的系統屬不支援的範圍,屆時將無法繼續使用本系統,建議您儘速升級作業系統、瀏覽器或電腦。"); } //全形半形轉換 //begin ... [ //全形轉半形 function decodeToAscii(text) { var asciiTable = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var big5Table = "%u3000%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; var result = ""; for (var i = 0; i < text.length; i++) { var val = escape(text.charAt(i)); var j = big5Table.indexOf(val); result += (((j > -1) && (val.length == 6)) ? asciiTable.charAt(j / 6) : text.charAt(i)); } return result; } //半形轉全形 function encodeFromAscii(text) { var asciiTable = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; var big5Table = "%u3000%uFF01%u201D%uFF03%uFF04%uFF05%uFF06%u2019%uFF08%uFF09%uFF0A%uFF0B%uFF0C%uFF0D%uFF0E%uFF0F%uFF10%uFF11%uFF12%uFF13%uFF14%uFF15%uFF16%uFF17%uFF18%uFF19%uFF1A%uFF1B%uFF1C%uFF1D%uFF1E%uFF1F%uFF20%uFF21%uFF22%uFF23%uFF24%uFF25%uFF26%uFF27%uFF28%uFF29%uFF2A%uFF2B%uFF2C%uFF2D%uFF2E%uFF2F%uFF30%uFF31%uFF32%uFF33%uFF34%uFF35%uFF36%uFF37%uFF38%uFF39%uFF3A%uFF3B%uFF3C%uFF3D%uFF3E%uFF3F%u2018%uFF41%uFF42%uFF43%uFF44%uFF45%uFF46%uFF47%uFF48%uFF49%uFF4A%uFF4B%uFF4C%uFF4D%uFF4E%uFF4F%uFF50%uFF51%uFF52%uFF53%uFF54%uFF55%uFF56%uFF57%uFF58%uFF59%uFF5A%uFF5B%uFF5C%uFF5D%uFF5E"; var result = ""; for (var i = 0; i < text.length; i++) { var val = text.charAt(i); var j = asciiTable.indexOf(val) * 6; result += (j > -1 ? unescape(big5Table.substring(j, j + 6)) : val); } return result; }