java可供判断某字符串是什么编码的⼀⾏代码
    System.out.println("中⽂");
System.out.println("中⽂".getBytes());
System.out.println("中⽂".getBytes("GB2312"));
System.out.println("中⽂".getBytes("ISO8859_1"));
System.out.println(new String("中⽂".getBytes()));
System.out.println(new String("中⽂".getBytes(), "GB2312"));
System.out.println(new String("中⽂".getBytes(), "ISO8859_1"));
System.out.println(new String("中⽂".getBytes("GB2312")));
System.out.println(new String("中⽂".getBytes("GB2312"), "GB2312"));
System.out.println(new String("中⽂".getBytes("GB2312"), "ISO8859_1"));
System.out.println(new String("中⽂".getBytes("ISO8859_1")));
System.out.println(new String("中⽂".getBytes("ISO8859_1"), "GB2312"));
System.out.println(new String("中⽂".getBytes("ISO8859_1"), "ISO8859_1"));
乱码符号有哪些eg:判断当前字符串的编码格式。
//判断当前字符串的编码格式
if(destination.equals(new Bytes("iso8859-1"), "iso8859-1")))
{
  destination=new Bytes("iso8859-1"),"utf-8");
}
刚学习java的⼈,对于java中⽅法Parameter(“”),返回值若是中⽂,有时会莫名其妙的值变成了乱码⽐较厌烦。
即使在处理中加⼊了
    response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
但效果并没有达到预期。究其原因在于以下⼏点:
ServletRequest接⼝中定义了⼀个getCharacterEncoding⽅法,该⽅法⽤于返回请求消息中的实体内容的字符集编码名称。如果请求消息中没有指定实体内容的字符集编码名称,则getCharacterEncoding⽅法返回null。
ServletRequest接⼝中定义了⼀个 setCharacterEncoding⽅法,该⽅法⽤于覆盖请求消息中的实体内容的字符集编码名称的设置。getParameter和getReader⽅法将读取到的实体内容从字节数组形态转换成字符串返回时,都要参照请求消息中的实体内容的字符集编码名称,所以,setCharacterEncoding⽅法应早于getParameter或getReader⽅法之前进⾏调⽤。
ServletRequest对象的getParameter等⽅法以哪种字符集编码对参数进⾏URL编码,需记下以下三种情况:
(1)对于HTTP请求消息的请求⾏中的URL地址后的参数,getParameter等⽅法进⾏URL解码时所采⽤的字符集编码在Servlet规范中没有明确规定,它由各个Servlet引擎⼚商⾃⾏决定。对于这种情况,Tomcat中的ServletRequest对象的getParameter等⽅法默认采⽤ISO8859-1字符集编码进⾏URL解码,因此⽆法返回正确的中⽂参数信息。
(2)对于POST⽅式下的”application/x-www-form-urlencoded”编码格式的实体内容,getParameter等⽅法以ServletRequest对象的getCharacterEncoding⽅法返回的字符集编码对其进⾏URL解码。事实上,对于IE浏览器产⽣的HTTP请求消息中没有通过任何⽅式指定对实体内容进⾏URL编码所采⽤的字符集编码,那么,Servlet引擎将⽆法知道请求消息中的实体内容的字符集编码,getCharacterEncoding()⽅法的返回值为null。对于这种情况,ServletRequest对象的getParameter等⽅法将使⽤默认的ISO8859-1字符集编码对实体内容中的参数进⾏URL解码,因此也将⽆法返回正确的中⽂参数信息。
(3) ServletRequest接⼝中定义了⼀个 setCharacterEncoding⽅法来设置请求消息中的实体内容的字符集编码名称,getParameter⽅法将以该⽅法设置的字符集编码对实体内容进⾏URL解码,所以,只要使⽤ServletRequest.setCharacterEncoding⽅法设置实体内容的字符集编码为其URL编码前的字符集编码,那么getParameter⽅法就可以从实体内容返回正确的中⽂参数信息。但是,应该注意⼀点:ServletRequest.setCharacterEncoding⽅法设置的是请求消息中的实体内容的字符集编码名称,它只影
响getParameter⽅法对POST⽅式下的”application/x-www-form-urlencoded”编码格式的实体内容进⾏URL解码的结果,⽽不能影响getParameter⽅法对HTTP请求消息的请求⾏中的URL地址后的参数进⾏URL解码的结果。
所以在servlet开发中对于中⽂参数值的处理,完整代码如下:
    response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String name=Tool.Parameter("name"), "美国");
if(name.equals(new Bytes("iso8859-1"), "iso8859-1")))
{
name=new Parameter("name").getBytes("iso8859-1"),"utf-8");        }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。