Servlet的中文问题

来源:互联网 发布:fastjson解析json数组 编辑:程序博客网 时间:2024/05/22 15:43

㈠ html文件如何包含了中文

    应该添加<meta http-equiv="content-type" content="text/html;charset=utf-8">。当然,charset也可以设置为其它支持中文的编码格式,比如gbk。

    作用:

        模拟一个消息头(content-type),告诉浏览器当前处理的是一个html文档,并且编码格式是utf-8。

 

㈡ servlet如果要输出中文

    ① 乱码问题产生的原因:

        ⑴ out.println()默认情况下,会使用iso-8859-1去编码。

        ⑵ 默认情况下,服务器生成的content-type消息头设置的编码格式是 iso-8859-1。

 

    ② 解决方式

    response.setContentType("text/html;charset=utf-8");

 

㈢ 如果表单有中文参数值,如何获取?

    ① 乱码问题产生的原因:

    浏览器会使用打开表单所在的页面的编码格式对中文参数值进行编码。web服务器一般情况下,会使用iso-8859-1去解码。

 

    ② 解决方式

        方式一:

            step1, 保证表单所在的页面按照指定的编码格式打开。

            <meta http-equiv="content-type" content="text/html;charset=utf-8">

 

            step2, request.setCharacterEncoding("utf-8");

            注意: 只对post请求有效。

 

        方式二:

            name = new String(name.getBytes("iso-8859-1"), "utf-8");

            将iso-8859-1编码格式的字符串转换成utf-8编码格式。

 

㈣ 将中文插入数据库

    ① 数据库要设置正确的字符集,即字符集必须支持中文,比如,在创建mysql数据库时

    create database jsd1307db default character set utf8;

 

    ② jdbc驱动程序要能够正确地进行编码(unicode-->某种本地编码格式,比如utf8)和解码。

    某些mysql的驱动程序不能够正确地进行编码和解码(默认会使用iso-8859-1进行编码和解码),所以,对于mysql的驱动,可以这样设置jdbc:mysql://localhost:3306/jsd1307db?useUnicode=true&characterEncoding=utf8

0 0
原创粉丝点击