您的位置:首页 > Web前端 > JavaScript

JS中的编码问题

2016-05-13 10:09 513 查看
如果在当前页面嵌入js,那么如果js文件中的编码方式和当前页面的编码方式不一样,那么js中的中文将会出现乱码情况;

一.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来代替。

(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或者从数据库中读取数据。

XML可以通过设置头文件来制定编码格式:

<?xml version="1.0" encodeing="UTF-8"?>


Velocity模板设置编码格式:

services.VelocityService.input.encoding=UTF-8


JSP设置编码格式:

<%@page contentType="text/html;charset=UTF-8"%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js URL 编码 乱码