深入分析Java Web技术内幕--学习笔记(2)

每天看20页,然后写小结。

在内存与磁盘上,编码的转换

JAVA的内存编码就采用UTF-16编码,他适合在内存和磁盘之间使用,但UTF-16不适合网络传输,一旦字节流损坏很难恢复。GB2312和GBK的编码规则类似,但GBK的范围更大,在GB2312和GBK中选择,应该选择GBK。使用UTF-8对ASCII字符采用单字节储存,单个字符损坏也不会影响后面的字符,编码效率介于GBK和UTF-16之间,使用UTF-8在编码效率和安全性中做了平衡,是理想的中文编码方式。

在JavaWeb中涉及的编码问题

对Header中的URL、Cookie和redirectPath都会进行相应的编码,URL更分为多个字段,其中的Path Info和Query String会出现前端编写的和用户提交的中文,他们的编码方式与页面编码和浏览器的URL编码有关。在物理传输上,Header的默认编码方式是ISO-8859-1,而我们也不能设置Header的其他解码格式,所以使用其他编码方式的URL需要用org.apache.catalina.util.URLEncoder编码(char[]原->char[]编码后,然后在底层:char[]编码后->baty[])。
访问数据库是利用JDBC驱动来完成,JDBC存取数据是用JDBC URL来指定数据库。所以要在JDBC URL中的Query String中需要指定编码方式,比如MySQL:url=“jdbc:mysql://localhost:3306/DB?useUnicode=true&characterEncoding=GBK”。

在JS中的编码问题

当引用外部JS文件,该JS文件中含义中文字符串,如果没有设置该引用JS的编码格式(charset),则默认为当前页面的默认字符集解析,如果该JS的编码与当前页面的编码不一致,会出现乱码。
通过JS发起异步调用的URL默认编码也是受浏览器影响,不同浏览器的默认编码不一样,如果是使用原始的AJAX的http_requset.open(‘GET’,url,true)调用,IE会使用操作系统的默认编码,Firefox则是用UTF-8编码。不同的JS框架也会对URL的编码处理不一样。
JS有三种函数来进行编码处理,escape()、encodeURL()和encodeURLComponent(),其中encodeURL()是JS常用的编码函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值