黑马程序员技术交流社区

标题: servle中的中文乱码问题 [打印本页]

作者: Apol    时间: 2015-10-11 09:52
标题: servle中的中文乱码问题
首先:同一个字符串,在不同的字符编码下,对应的字节文件应该是不同的,是吧?
在Servlet程序中,用ServletOutputStream对象将静态的HTML文件中的内容按字节流的形式原封不动的写入到客户端,就不会出现字符编码转换的问题。但是如果不知道HTML文件的文件编码格式,也就是不知道读入的字节流的编码格式,怎么能正确输出原文件的内容呢?

作者: 1312564637    时间: 2015-10-11 09:52
因为在html文件中    <meta http-equiv="content-type" content="text/html; charset=UTF-8">即可以控制服务器以什么码表发送数据,也可以控制客户端(浏览器)以什么码表打开,所以不会出现乱码问题,而html文件是你自己写的,你应该知道他是什么编码,一般情况html,只是负责给客户端显示数据的,而要想接受客户端传来的数据最好用Servlet,而客户端以什么编码表发过来的数据可以通过ServletRequest中的getCharacterEncoding()方法就可以知道客户端是用的哪个码表,如果觉的我回答的还行,就把你的黑马币给我吧
作者: 斑点狗    时间: 2015-10-11 16:30
在不同的字符编码下,对应的字节文件是不同的,因为它们的字符编码表不一样。
举个例子:浏览器中采用的是GB2312码表,程序用的是UTF-8码表,这时向浏览器中输入的是"博客",假如在UTF-8中“博客”两个字在码表中位置为43,44,而在GB2312码表中查找43,44时却是“娣”,"亞",这时浏览器会显示的是"娣亞"而不是“博客”。

在都不知道浏览器中采用的是什么编码格式和程序中用的是什么编码格式,我觉得应该显示的设置下最好,这样能避免出错。

作者: hxl8945    时间: 2015-10-11 23:27
你转换下编码格式        try {
                        buff = str.getBytes("GBK");
                } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                }
作者: chengaq0    时间: 2015-10-12 15:01
在发送请求数据的时候,会将发送端的编码格式传递给服务器
作者: Change.+    时间: 2015-10-29 19:13
输出乱码的问题是程序用UTF-8编码,而浏览器用GB2312解码,因此会出现乱码;
作者: 活到老,学到老    时间: 2015-11-12 11:17
把你的默认读取语言修改为GB2310的就可以了。那样就不会乱码了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2