zoukankan      html  css  js  c++  java
  • Servlet & JSP

    Servlet 中的中文字符

    来自 URL 参数部分的中文字符

    Tomcat 默认接收数据的编码是 ISO-8859-1。所以当请求 URL 的参数部分含有中文字符,需要转换字符的编码。 

    Enumeration<String> paramNames = req.getParameterNames();
    while (paramNames.hasMoreElements()) {
        String paramName = (String) paramNames.nextElement();
        String paramValue = req.getParameter(paramName);
        String paramValueUTF8 = new String(paramValue.getBytes("ISO-8859-1"), "UTF-8");
        System.out.println(paramName + ": " + paramValueUTF8);
    }

    上述的方法的一个不足是:需要对所有的参数部分解码。可以直接在 Tomcat 的 server.xml 中将默认的编码设置为 UTF-8。

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

    来自 POST 表单的中文字符

    当客户端提交的表单内容包含中文字符时,可以在获取表单内容前,调用 request.setCharacterEncoding 方法来设置字符的编码:

    req.setCharacterEncoding("UTF-8");
    Enumeration<String> paramNames = req.getParameterNames();
    while (paramNames.hasMoreElements()) {
        String paramName = (String) paramNames.nextElement();
        System.out.println(paramName + ": " + req.getParameter(paramName));
    }

    响应至客户端的中文字符

    当响应至客户端的内容包含中文字符时,可以在获取输出流之前,调用 response.setContentType 方法来设置响应内容的类型及编码。 

    resp.setContentType("text/plain;charset=utf-8");
    resp.getWriter().println("中文字符");

    HTTP 首部的中文字符

    HTTP 首部只支持 ASCII 编码,可以对首部进行 URL 编码。

    resp.setContentType("text/plain;charset=utf-8");
    String fileName = URLEncoder.encode("中文名称.txt", "UTF-8");
    resp.setHeader("Content-disposition", "attachment;filename=" + fileName);

    JSP 中的中文字符

    JSP 页面内容的中文字符

    当 jsp 页面内容包含中文字符时,可以使用 page 指令来指定字符编码。

    <%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>中文标题</title>
    </head>
    <body>
    中文内容
    </body>
    </html>

    JSP Java 代码中的中文字符

    JSP 的本质即 Servlet,所以当 JSP 页面中的 Java 代码包含中文字符时,则可以参考 Servlet 中是如何解决中文字符的。

  • 相关阅读:
    一个故事讲透供应链的三大战略
    电商系统之订单正向与逆向流程设计
    广告深度预估技术在美团到店场景下的突破与畅想
    美团智能客服核心技术与实践
    供应链里的批次管理,你了解多少
    对于HTML语义化的理解
    前端三大框架中Vue与React区别
    对于mvc模式的理解与学习
    对于javascript里面闭包的理解
    webpack的理解与使用
  • 原文地址:https://www.cnblogs.com/huey/p/5452582.html
Copyright © 2011-2022 走看看