这段时间经常看到有人问到web开发中怎么中文总是?号。原因其实很简单,因为大家大多用的是tomcat服务器,而tomcat服务器的默认编码为 iso-8859-1(西欧字符)。就是因为iso-8859-1(西欧字符)编码造成了我们经常看到?号。

  方法一:最简单也是用的最多的方法。

<%@ page language="java" pageEncoding="GBK" %>

或者<%@ page contenttype="text/html;charset=gbk";>这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。

这个方法用于jsp页面中的中文显示。

  方法二:使用过滤器。

过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。

编写一个SetCharacterEncodingFilter类。

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class SetCharacterEncodingFilter implements Filter {

protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig=filterConfig;

this.encoding=filterConfig.getInitParameter("encoding");

String value=filterConfig.getInitParameter("ignore");

if(value==null)

this.ignore=true;

else if(value.equalsIgnoreCase("true"))

this.ignore=true;

else

this.ignore=false;

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

// TODO 自动生成方法存根

if (ignore || (request.getCharacterEncoding() == null)) {

String encoding = selectEncoding(request);

if (encoding != null)

request.setCharacterEncoding(encoding);

}

chain.doFilter(request, response);

}

public void destroy() {

// TODO 自动生成方法存根

this.encoding = null;

this.filterConfig = null;

}

protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}

然后再web.xml加上

<!-- Set Character Encoding-->

<filter>

<filter-name>Set Character Encoding</filter-name>

<filter-class>com.struts.common.SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>Set Character Encoding</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- Set Character Encoding-->

使用过滤器的好处很多,特别是项目之中。

而且在使用国际化时就更有用了,只要在页面指定 <%@ page language="java" pageEncoding="UTF-8" %>,服务器就会根据本地Locale来显示正确的字符集。

所以我特别推荐使用过滤器。

方法三:修改tomcat的server.xml文件中URIEncoding.

<Connector debug="0" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"

port="80" redirectPort="8443" enableLookups="false" minSpareThreads="25" maxSpareThreads="75"

maxThreads="150" maxPostSize="0" URIEncoding="GBK" >

</Connector>

这个方法主要针对从url中获取字符串的问题。

转载于:https://blog.51cto.com/lailjiaaie/1103072

老手讲解在JSP开发中与Web的中文问题解决方法相关推荐

  1. java开发中遇到的问题及解决方法(持续更新)

    java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...

  2. 微信小程序在开发中遇到的问题与解决方法

    微信小程序在开发中遇到的问题与解决方法 参考文章: (1)微信小程序在开发中遇到的问题与解决方法 (2)https://www.cnblogs.com/zjjDaily/p/8032142.html ...

  3. Android应用开发中三种常见的图片压缩方法

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法private Bitmap comp ...

  4. iphone iPhone开发中为UINavigationBar设置背景图片方法

    1:原文摘自:http://mobile.51cto.com/iphone-284865.htm iPhone开发中为UINavigationBar设置背景图片方法是本文要介绍的内容,在iPhone开 ...

  5. Android实际开发中的bug总结与解决方法(一)

    Android实际开发中的bug总结与解决方法(一) 参考文章: (1)Android实际开发中的bug总结与解决方法(一) (2)https://www.cnblogs.com/ywq-come/p ...

  6. java 判断手机运营商_Java开发中识别手机运营商的方法

    在Java开发中程序需要根据用户输入的号码判断运营商,这该怎么实现呢?而我们需要根据不同的运营商进行相应的处理,下面是爱站技术频道小编介绍的Java开发中识别手机运营商的方法. js实现方法: var ...

  7. 前端开发中遇到的问题及解决方法

    前端开发中遇到的问题及解决方法 1,何为MVVM? view层: 视觉层:在前端开发中,通常是DOM层:主要作用是给用户展示各种信息: Model层: 数据层:数据可能是我们固定的死数据,更多的是来自 ...

  8. jsp页面中include的两种使用方法

    jsp页面中include的两种使用方法 include有两种用法 <%@ include file="文件的绝对路径或者相对路径"%> <jsp:include ...

  9. 小米首页实践开发中遇到的问题及解决方法

    小米首页实践开发中遇到的问题及解决方法 1.菜单栏的指向小三角问题 解决方法:使用矩形边框绘制三角形,用CSS设置矩形内容为空.边框设置一定的宽度(三角形的高),并且设置一个方向的边框颜色,其他方向颜 ...

最新文章

  1. 便携式不锈钢管道焊接机器人_304不锈钢管居然可以发黑?
  2. 记录ionic 最小化应用时所遇的问题
  3. AxWebBrowser
  4. 医疗用户端app原型/问诊/挂号/开药/视频问诊/电子处方/预约/互联网医疗平台用户端/Axure原型/电话问诊/药品/就诊开药/远程医疗平台/线上问诊/线上看病/rp源文件/移动端医疗原型/门诊
  5. Flink Weekly | 每周社区动态更新-12/24
  6. 最新安卓版本对照表,API对照表,持续更新
  7. 蓝方防守、HW总结报告模板
  8. 猜你喜欢”推荐算法大赛冠军分享
  9. 计算机在随机抽样上的应用,使用计算机随机分组与随机抽样的方法及应用
  10. 硬核图解面试最怕的红黑树【建议反复摩擦】
  11. 【测试基础】bug分级、测试流程、ISO9126质量模型
  12. 【求职面试】面试中 HR 经常问到什么样的问题?赶紧看一看!
  13. 【Python】迭代法求解非线性方程及方程组
  14. 行人与车辆检测计数人脸识别
  15. CentOS搭建SVN服务器
  16. arduino led灯通讯
  17. win10卸载补丁发生错误,没有成功卸载全部更新
  18. 临床血液学综合练习题库【3】
  19. 啊哈,拉个群就是私域流量,怪不得做不好运营工作
  20. 杭州卫星地图 百度卫星地图(含道路、标签信息叠加)

热门文章

  1. Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  2. 使用NSURLConnection实现大文件断点下载
  3. Smart Crop,一种切除 PDF 扫描文档白边的新选择(工程篇)
  4. 我与监控宝之间的点点滴滴
  5. 《C语言及程序设计》实践参考——当年第几天
  6. SqlServer判断表是否存在
  7. BOM中的其他对象以及短路运算
  8. MYSQL数据库字母数字混合字段排序问题
  9. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4
  10. CSS之 background-color: rgba(255,0,0,opacity number)