博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于乱码的解决方案
阅读量:2062 次
发布时间:2019-04-29

本文共 1664 字,大约阅读时间需要 5 分钟。

简介:

我们从两个方面入手,1 服务器对浏览器的响应 ,2 浏览器对服务器的请求

one by one

 1 服务器对浏览器的响应

让我们画图来说明这个复杂的问题吧,这样还能易于理解点。

好了,看完这个我相信你可以理解的很好了,我觉得我解释的够清楚了。

使用代码:

response.setHeader("Content-Type", "text/html;charset=utf-8");		PrintWriter printWriter = response.getWriter();		printWriter.println("你好,我用的是UTF-8");		printWriter.close();

2浏览器对服务器的请求

一样我们还是来用图说话

怎么样,明白了吧,我们把解决的重点放在页面中点击表单或链接提交数据,而不去理会地址栏直接给参数,因为没有人这样做。

好了,让我们来看个案例吧:

MyHtml.html
姓名:
密码:
get方法
/** * 这个servlet用来接收表单或超链接的请求 * @author 74087 * */public class RequestEncodingTest extends HttpServlet {	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		String name = request.getParameter("name");		String password = request.getParameter("password");		byte[] names = name.getBytes("ISO-8859-1");//进行反编码得到字节数组		byte[] passwords = password.getBytes("ISO-8859-1");		name = new String(names,"UTF-8");//按照我们需要的编码方式进行编码		password = new String(passwords,"UTF-8");		response.setHeader("Content-Type", "text/html;charset=utf-8");		PrintWriter pw = response.getWriter();		pw.println("name=" + name);		pw.println("password=" + password);		pw.close();	}	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		request.setCharacterEncoding("utf-8");//设置编码方式		String name = request.getParameter("name");		String password = request.getParameter("password");		response.setHeader("Content-Type", "text/html;charset=utf-8");		PrintWriter pw = response.getWriter();		pw.println("name=" + name);		pw.println("password=" + password);		pw.close();			}}

你可能感兴趣的文章
ExecutorService 线程池 newFixedThreadPool newSingleThreadExecutor newCachedThreadPool
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>
web.xml配置监听器,加载数据库信息配置文件ServletContextListener
查看>>
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>