Java Web中的编码问题(3)

本文深入探讨了JavaWeb中的编码问题,包括HTTPBody的编解码流程及如何在JS中处理编码问题,特别是针对URL编码的不同处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java Web中的编码问题(3)

(7)HTTP BODY的编解码

    当用户请求的资源已经成功获取后,这些内容将通过Response返回给客户端浏览器,这个过程要先经过编码,再到浏览器进行解码。编解码字符集可以通过response.setCharacterEncoding来设置。并且通过Header的Content-type返回客户端,浏览器接收到返回的Socket流时将通过Content-Type的charset来解码。如果返回的HTTP Header中ContentType没有设置charset,那么浏览器将根据HTML的<meta HTTP-evquiv=”Content-Type” content=”text/html; charset=GBK”>中的charset来解码。如果也没有定义,那么浏览器将使用默认的编码来解码。

(8) 在JS中的编码问题。

一、 外部引入JS文件

    如果一个单独的js文件中出现中文,在页面引入的时候。如果js文件的编码和页面的编码格式不同,就会出现乱码。

二、 JS的URL编码

    通过JS发起异步调用的URL默认编码也是受到浏览器影响的,另外不同的JS框架可能对URL的编码处理也不一样

JS中处理URL编码的函数有3个:

1. escape()

已弃用

2. encodeURL()

它可以将整个URL中的字符(一些特殊字符除外)进行UTF-8编码,在每个码值前加上“%”。

3. encodeURLComponment()

比encodeURL()编码还要彻底。这个函数通常用于将一个URL当做一个参数放在另一个URL中。

4. Java与JS编解码问题

 我们知道,在Java端处理URL编解码有两个类,分别是java.net.URLEncoder和java.net.URLDecoder。这两个类可以将所有“%”加UTF-8码值用UTF-8解码,从而得到原始的字符。URLEncoder受保护的字符要少于js中受保护的字符。Java端的URLEncoder和URLDecoder与前端JS对应的是encodeURLComponment和decodeURLComponment。

 如果js使用utf-8编码,java使用GBK解码,会出现乱码,可以将url进行两次编码encodeURLComponment(encodeURLComponment(url)),这样java使用gbk就可以取到UTF-8编码的字符串。如果java端需要使用这个字符串,则在用UTF-8解码一次。如果是将这个结果传递到前端,那么这个UTF-8字符串可以直接在全段正常显示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值