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"%>
相关文章
相关标签/搜索