2019年1月8日 星期二

特殊字符\u2028導致的Javascript腳本異常

網上查詢得知,這個編碼為2028的字符為行分隔符,會被瀏覽器理解為換行,而在Javascript的字符串表達式中是不允許換行的,從而導致錯誤。
解決方法

把特殊字符轉義替換即可,代碼如下所示:
1
   
str = str.Replace("\u2028", "\\u2028");

替換後,用之前有問題的文章測試,加載正常,問題解決。

另外,Javascript中的特殊字符一共有13個,建議都進行轉義處理,如下:
Unicode 字符值    轉義序列    含義    類別
\u0008     \b     Backspace    
\u0009     \t     Tab     空白
\u000A     \n     換行符(換行)     行結束符
\u000B     \v     垂直製表符     空白
\u000C     \f     換頁     空白
\u000D     \r     回車     行結束符
\u0022     \"     雙引號 (")    
\u0027     \'     單引號 (')    
\u005C     \\     反斜槓 (\)    
\u00A0           不間斷空格     空白
\u2028           行分隔符     行結束符
\u2029           段落分隔符     行結束符
\uFEFF           字節順序標記     空白