关于java.net.URLEncoder.encode编码问题

Q:java.net.URLEncoder.encode里的编码和什么有关的?

A:使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc编码跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip","GBK")也是完全没问题的,但如果你用其他编码比如iso8859-1就会解出来乱码了

Q:至于选择哪种enc跟你jvm的default charset有关 默认是UTF-8? 和tomcat目录下的conf目录下的设置端口号那个标签里的URIEncoding="UTF-8"这个属性有关么?

A:有的,如果你用的是tomcat的话,因为你网络传输需要经过tomcat处理的,tomcat会将你的网络流编码转换成配置中的编码,如果两边不对应的话,有可能会出现乱码,但如果编码站位较长转为短码也不会乱码

Q:为什么我将URIEncoding改成GBK也没见它乱码呢?

A:那要看你的项目编码设置咯,你的项目是GBK的话,tomcat的传输编码会以你运行project为准,你可以改成iso的试试的嘛

在Web的浏览器中,不同的浏览器的编码和解码规则是不一样的.

对于W3C浏览器:遵循W3C组织规范的浏览器,(非IE).

编码:byte[] data = “任小龙”.getByte(String charsetName);

解码:String  str = new String(data, String charsetName);

对于IE浏览器:

编码使用的application/x-www-form-urlencodedMIME机制.

原文地址:https://www.cnblogs.com/JSD1207ZX/p/10264883.html

时间: 2024-10-07 11:01:47

关于java.net.URLEncoder.encode编码问题的相关文章

关于android.jar里的java.net.URLEncoder.encode()和jdk里的java.net.URLEncoder.encode()出现的问题

问题: 最近做的项目中,因为要用到socket,所以难免就有编码的要"GBK",但是发 现在用android.jar里的java.net.URLEncoder.encode("汉字","GBK")做编码时发现会丢失最后一个汉字的一 半,如"闽"编码后成了"%C3"而不是正确的"%C3%d6",随后在另外一个java项目里demo,发现 java.net.URLEncoder.encode

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

URLEncoder.encode、URLDecoder.decode、escape、encodeURI、encodeURIComponent

escape()方法 采 用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符 在字符集表里面的编码的16进制数字).比如,空格符对应的编码是%20,如果是中文,则使用unicode编码格式如 %uxxxx.unescape方法与此相反.不会被此方法编码的字符有69个: @*_+-./ ,0-9,a-z,A-Z encodeURI() 方法 把URI字符串采用UTF-8编码格式转化成escape

java中URL 的编码和解码函数

java中URL 的编码和解码函数java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);在javascript 中URL 的编码和解码函数escape(String s)和unescape(String s) ; 在前台:var url="test.jsp?param="+escape('this%is#te=st&o k?+/');在后台: String param=request.

解决java中对URL编码的问题

首先查看javascript中的encodeURI和encodeURLComponent方法的区别. encodeURI:不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )    也不会对以下在 URI 中具有特殊含义的 ASCII 标点符                 号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,# encodeURLComponent:不会对 ASCII 字母和数字进行编码,也不

javaWeb中URLEncoder.encode空格问题

最近开发一个在线坐席的功能,发现推送的消息中空格变成了+ ,查询发现URLEncoder.encode的问题,以前用的时候也没注意过,解决办法网上是对URLEncoder.encode的之后的字符串进行替换+号,这种方式如果真的有+号那也被替换了,所以应该在URLEncoder.encode方法之前对字符创进行替换,然后到了页面上在对其进行替换回来 代码: java中URLEncoder.encode之前进行替换: //解决urlecode空格问题 message=message.replace

java、js的编码、解码

如果在地址栏挂载参数,特别是包含中文,往往要进行编码,取值时再解码,以下是java和js中编码.解码的各自方法. java: @Test public void test3() throws UnsupportedEncodingException{ System.out.println(URLEncoder.encode("我", "UTF-8"));//%E6%88%91 System.out.println(URLDecoder.decode("%E

java.net.URLEncoder 解决url中文参数乱码问题【2014-11-17】

1.编码规则 java.net Class URLEncoder java.lang.Object java.net.URLEncoder public class URLEncoder extends Object Utility class for HTML form encoding. This class contains static methods for converting a String to the application/x-www-form-urlencoded MIM

URLEncoder.encode转译后“空格”变“加号”的问题的解决方案

dst_fname=URLEncoder.encode(dst_fname); 对字符串dst_fname进行编码,但是发现空格全部都变成了加号 dst_fname=URLEncoder.encode(dst_fname);dst_fname=dst_fname.replaceAll("\\+",  "%20"); //处理空格,我们提需求的傻B非得要空格的,但是不编码有很多非常特殊的文字无法显示. 遇到的问题:当上传文件的文件名中间有空格,用URLEncoder.