A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Apol 中级黑马   /  2015-10-11 09:52  /  3479 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

最佳答案

查看完整内容

因为在html文件中 即可以控制服务器以什么码表发送数据,也可以控制客户端(浏览器)以什么码表打开,所以不会出现乱码问题,而html文件是你自己写的,你应该知道他是什么编码,一般情况html,只是负责给客户端显示数据的,而要想接受客户端传来的数据最好用Servlet,而客户端以什么编码表发过来的数据可以通过ServletRequest中的getCharacterEncoding()方法就可以知道客户端是用的哪个码表,如果觉的我回答的还行,就把你的黑 ...

6 个回复

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

在都不知道浏览器中采用的是什么编码格式和程序中用的是什么编码格式,我觉得应该显示的设置下最好,这样能避免出错。
回复 使用道具 举报
你转换下编码格式        try {
                        buff = str.getBytes("GBK");
                } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                }
回复 使用道具 举报
在发送请求数据的时候,会将发送端的编码格式传递给服务器
回复 使用道具 举报
输出乱码的问题是程序用UTF-8编码,而浏览器用GB2312解码,因此会出现乱码;
回复 使用道具 举报
把你的默认读取语言修改为GB2310的就可以了。那样就不会乱码了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马