我新学Java web 大多数情况下都会有乱码,后来老师说charset=UTF-8就是,但是在有些jsp代码中还是乱码,我有点不明白,我想知道大神在乱码当面是怎么解决的。 希望大神能分享一下
3条回答 默认 最新
- JonyShan 2017-03-06 15:49关注
• 向客户端输出中文数据
用OutputStream(字节流)发送数据:
public class ServletDemo6 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter();//得到一个字符输出流 writer.write("你好"); //这个相应到客户端 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
}
1、response.getOutputStream().write(“中国”.getBytes());//以默认编码发送数据
2、response.getOutputStream().write("中国".getBytes("UTF-8"));//以UTF-8编码发送数据,浏览器(默认用GB2312)会出现乱码
画图描述出现该问题的原因。
解决办法:
2.1通过更改浏览器的编码方式:IE/”查看”/”编码”/”UTF-8”(不可取)
2.2通过设置响应头告知客户端编码方式:response.setHeader(“Content-type”, “text/html;charset=UTF-8”);//告知浏览器数据类型及编码
2.3通过meta标签模拟请求头:out.write("".getBytes());
2.4通过以下方法:response.setContentType("text/html;charset=UTF-8");
总结:程序以什么编码输出,就需要告知客户端以什么编码显示。
小细节:输出字符“1”用response.getOutputStream().write(1);出现的问题?用OutputStream(字节流)发送数据:
Servlet:
1、response.getOutputStream().write(“中国”.getBytes());//以默认编码发送数据
2、response.getOutputStream().write("中国".getBytes("UTF-8"));//以UTF-8编码发送数据,浏览器(默认用GB2312)会出现乱码
画图描述出现该问题的原因。
解决办法:
2.1通过更改浏览器的编码方式:IE/”查看”/”编码”/”UTF-8”(不可取)
2.2通过设置响应头告知客户端编码方式:response.setHeader(“Content-type”, “text/html;charset=UTF-8”);//告知浏览器数据类型及编码
2.3通过meta标签模拟请求头:out.write("".getBytes());
2.4通过以下方法:response.setContentType("text/html;charset=UTF-8");
总结:程序以什么编码输出,就需要告知客户端以什么编码显示。小细节:输出字符“1”用response.getOutputStream().write(1);出现的问题?
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作