JS中的編碼問題

若是在當前頁面嵌入js,那麼若是js文件中的編碼方式和當前頁面的編碼方式不同,那麼js中的中文將會出現亂碼狀況;html

一.JS中的URL編碼

使用Ajax中的http_request.open('GET',url,true)調用,URL的編碼在IE下是操做系統的默認編碼,而在Firefox下則是UTF-8編碼。另外不一樣的js框架可能對URL的編碼處理也不同。 實際上JS中處理URL編碼只要掌握是三個函數就能夠前端

(1).escape(),這個函數將ASCII字母、數字、標點符號(* + - 。/ @ _)之外其餘全部字符轉化成Unicode編碼值,而且在編碼值前加上「%u」,該函數使用對應的解碼函數unescape();注意,escape()和unescape()已經從ECMAScript v3標準中刪除了,URL的編碼能夠用encodeURL和encodeURLComponent來代替。java

(2).encodeURL(),與escape()函數相比,encodeURL() 是真正JS用來對URL編碼的函數,它能夠將整個URL中的字符(除了一些特殊字符,如!#&'()*+,-./:;=?@_~0-9a-zA-Z)進行UTF-8編碼,在每一個碼值前加上「%」。相應的解碼經過decodeURL()函數。數據庫

(3).encodeURLComponent(),該函數比encodeURL()函數更加完全,它除了對!'()*-._!0-9a-zA-z這幾個字符不編碼以外,其餘字符都編碼,這個函數一般用於將一個URL當作一個參數放在另外一個URL中。服務器

備註:java端的URLEncoder和URLDecode與前端JS對應的是encodeURLComponent和decodeURLComponent。框架

二.其餘須要編碼的地方

除了URL和參數編碼問題外,在服務器還有不少地方可能存在編碼,如可能西堯都區XML、Velocity模板引擎、jsp或者從數據庫中讀取數據。jsp

  • XML能夠經過設置頭文件來制定編碼格式:
<?xml version="1.0" encodeing="UTF-8"?>
  • Velocity模板設置編碼格式:
services.VelocityService.input.encoding=UTF-8
  • JSP設置編碼格式:
<%@page contentType="text/html;charset=UTF-8"%>
相關文章
相關標籤/搜索