资讯专栏INFORMATION COLUMN

Java中的乱码问题研究(二)

mochixuan / 1638人阅读

摘要:一前言上面写了的乱码问题,接下来写的是中中的问题,大楷我比较关心一点,因为遇到这个的情况多一些吧。注意是就行了,之前采用是由用户设置的编码方式解析,过后有个参数被默认了,就使用了解析了,这儿是配置中的关键。

一、前言

上面写了console的乱码问题,接下来写的是web中servlet中的问题,大楷我比较关心一点,因为遇到这个的情况多一些吧。直接开始吧。

二、jsp和servlet中的乱码问题

其实在java文件的编译的情况和(一)中的情况是一样的,不过这里是由WEB容器去调用JVM而已,那么我们得知道一些默认的东西

比如特别重要的:(摘要)

如果Servlet 在运行的过程中,需要接受从客户端传来的字符如:表单输入的值和URL中传入的值,此时如果程序中没有设定接受参数时采用的编码格式,则WEB 容器会默认采用ISO-8859-1 编码格式来接受传入的值并在JVM 中转化为UNICODE 格式的保存在WEB 容器的内存中。Servlet 运行后生成输出,输出的字符串是UNICODE 格式的,紧接着,容器将Servlet 运行产生的UNICODE 格式的串(如html语法,用户输出的串等)直接发送到客户端浏览器上并输出给用户,如果此时指定了发送时输出的编码格式,则按指定的编码格式输出到浏览器上,如果没有指定,则默认按ISO-8859-1 编码发送到客户的浏览器上。

注意是ISO-8859-1就行了,tomcat 5.0之前采用是由用户设置的编码方式解析,tomcat 5.0过后有个参数(useBodyEncodingForURI)被默认了false,就使用了ISO-8859-1解析了,这儿是配置中的关键。

public class Hello extends HttpServlet {
    private static final long serialVersionUID = 4878915372815719687L;
    
    public Hello() {
        super();
    }
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //输入:设置请求编码格式
        request.setCharacterEncoding("GBK");
        //输出:设置响应编码格式
        response.setContentType("text/html; charset=GBK");
        PrintWriter out = response.getWriter();
        out.write("
"); out.write("Hello, 中文!"); out.write("
"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //输入:设置请求编码格式 request.setCharacterEncoding("GBK"); //输出:设置响应编码格式 response.setContentType("text/html; charset=GBK"); //从请求中接收参数 String input_str = request.getParameter("input_str"); String url_arg = request.getParameter("url_arg"); //出错处理 input_str = (null == input_str) ? "" : input_str; url_arg = (null == url_arg) ? "" : url_arg; PrintWriter out = response.getWriter(); out.write("
"); out.println("您输入的字符串是:" + input_str); out.write("
"); //out.println("您的表单传递的URL参数是:" + new String(url_arg.getBytes("ISO-8859-1"), "GBK")); out.println("您的表单传递的URL参数是:" + url_arg); out.write("
"); } public void init() throws ServletException { // Put your code here } }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64744.html

相关文章

  • Java中的乱码问题研究(一)

    摘要:一前言最近感觉自己对编码的理解还不够透彻,研究一下编码的问题,我觉得这个是值得研究的地方。自己开始研究的时候,很细心的看了不少的资料,这里和大家分享一下,希望对大家有用,原理有些我就不一条一条的来了,重点描述下吧。 一、前言 最近感觉自己对编码的理解还不够透彻,研究一下编码的问题,我觉得这个是值得研究的地方。自己开始研究的时候,很细心的看了不少的资料,这里和大家分享一下,希望对大家有用...

    godlong_X 评论0 收藏0
  • JavaWeb 乱码问题终极解决方案!

    摘要:经常有读者在公众号上问乱码的问题,昨天又有一个小伙伴问及此事,其实这个问题很简单,但是想要说清楚却并不容易,因为每个人乱码的原因都不一样,给每位小伙伴都把乱码的原因讲一遍也挺费时间的,因此,松哥今天决定写一篇文章,和大伙好好捋捋中的乱码问题 经常有读者在公众号上问 JavaWeb 乱码的问题,昨天又有一个小伙伴问及此事,其实这个问题很简单,但是想要说清楚却并不容易,因为每个人乱码的原因...

    canger 评论0 收藏0
  • JavaWeb中文乱码初探

    摘要:一前言在开发的过程中,难免会出现中文乱码的问题。接下来写的是我在解决中文乱码问题时的学习心得,一是为了能加深印象,二是希望能帮初学者们解决一些疑惑。二正文之所以会出现中文乱码,是因为在进行时的编码方式不正确。 一、前言  在开发JavaWeb的过程中,难免会出现中文乱码的问题。接下来写的是我在解决中文乱码问题时的学习心得,一是为了能加深印象,二是希望能帮初学者们解决一些疑惑。如有说的不...

    eccozhou 评论0 收藏0
  • 菜鸟笔记(一) - Java常见的乱码问题

    摘要:本文将介绍一种开发常见的乱码问题。前提摘要在学习的过程中,乱码问题是经常遇到的,无论是页面乱码还是数据库乱码。本文将罗列笔者在开发过程中常常遇到几种乱码场景。菜鸟笔记下周不见不散 本文将介绍一种Java Web/Api 开发常见的乱码问题。 前提摘要:在学习Java Web的过程中,乱码问题是经常遇到的,无论是页面乱码还是数据库乱码。本文将罗列笔者在开发过程中常常遇到几种乱码场景。 一...

    ixlei 评论0 收藏0
  • 各浏览器下载文件名不乱码的解决办法

    摘要:在项目中发现,使用下载中文名文件的时候,下载的文件名是乱码的问题。但是这个问题在,,中是没有的。原先以为是的,但是细细研究之下你会发现这个简单的文件下载问题在协议里经历了多少波折。 在项目中发现,使用Safari下载中文名文件的时候,下载的文件名是乱码的问题。但是这个问题在IE,Firefox,Chrome中是没有的。原先以为是Safari的bug,但是细细研究之下你会发现这个简单的文...

    VishKozus 评论0 收藏0

发表评论

0条评论

mochixuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<