十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
将文件打开。另存为,然后下面会出现一个编码格式,自己选择GB2312即可,不过记事本方式是没gb2312的,找个EditPlus或者其他的文本工具,里面就有GB2312 可以选择,或者在myeclipse里面右键文件,点最底下的选择进去也有一个更换格式的,不过更换了中文会乱码得重新写
成都创新互联公司是一家集网站建设,兰溪企业网站建设,兰溪品牌网站建设,网站定制,兰溪网站建设报价,网络营销,网络优化,兰溪网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
主要分response的字节字符输出流和request接受中文参数doGet(),doPost()的设置四种.以及从服务器下载文件到浏览器的编码问题.
都是我学习java时总结的,希望能帮到你.
response的字节输出流:
// 设置浏览器默认打开的时候采用的字符集编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 设置中文转成字节数组的时候取出的编码
response.getOutputStream().write("如果不设置编码,这里就是乱码".getBytes("UTF-8"));
response的字符输出流:
//设置浏览器默认打开的时候采用的字符集编码,response的字符流的缓冲区的编码.
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("中文");
request的doGet()编码解决:
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("GET方式:"+name);
request的doPost()编码解决:
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
System.out.println("POST方式:"+name);
下载文件时浏览器编码问题:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.接收参数
String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(filename);
// 2.完成文件下载:
// 2.1设置Content-Type头(获取文件的mime类型)
String type = this.getServletContext().getMimeType(filename);
//设置文件的mime类型
response.setHeader("Content-Type", type);
// 2.3web项目文件的绝对路径
String realPath = this.getServletContext().getRealPath("/download/"+filename);
// 获得浏览器的类型处理中文文件的乱码问题.(User-Agent:服务器收到客户端版本之类的一些信息)
String agent = request.getHeader("User-Agent");
System.out.println(agent);
if(agent.contains("Firefox")){
filename = base64EncodeFileName(filename);
}else{
//IE谷歌编码
filename = URLEncoder.encode(filename,"UTF-8");
}
// 2.2设置Content-Disposition头(固定写法,让浏览器必须下载,不能直接打开)
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//获得文件
InputStream is = new FileInputStream(realPath);
// 获得response指定的方法获取输出流:如果用其他流是直接拷贝而不是下载
OutputStream os = response.getOutputStream();
int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b))!= -1){
os.write(b, 0, len);
}
//响应流可以不关,在服务器做出相应后服务器会自动把response获得的流关闭
is.close();
}
//火狐
public static String base64EncodeFileName(String fileName) {
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
return "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
记事本打开
java
文件,文件
-
另存为
保存左边有选择编码类型的下拉框,修改后保存并替换即可
做到这些规则的目的很简单,就是写出“优美”的Java代码来。
1、Java注释尽可能全面
对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说明、作者和修改者。
2、多次使用的相同变量最好归纳成常量 多处使用的相同值的变量应该尽量归纳为一个常量,方便日后的维护。
3、尽量少的在循环中执行方法调用 尽量在循环中少做一些可避免的方法调用,这样可以节省方法栈的创建。例如:
for(int i=0;ilist.size();i++){
System.out.println(i);}可以修改为:
for(int i=0,size=list.size();isize;i++){
System.out.println(i);}4、常量的定义可以放到接口中 在Java培训中,接口里只允许存在常量,因此把常量放到接口中声明就可以省去public static final这几个关键词。
5、ArrayList和LinkedList的选择 这个问题比较常见。通常程序员最好能够对list的使用场景做出评估,然后根据特性作出选择。ArrayList底层是使用数组实现的,因此随机读取数据 会比LinkedList快很多,而LinkedList是使用链表实现的,新增和删除数据的速度比ArrayList快不少。
6、String,StringBuffer和StringBuilder 这个问题也比较常见。在进行字符串拼接处理的时候,String通常会产生多个对象,而且将多个值缓存到常量池中。例如:
String a=“a”;
String b=“b”;a=a+b;这种情况下jvm会产生“a”,“b”,“ab”三个对象。而且字符串拼接的性能也很低。因此通常需要做字符串处理的时候尽量采用StringBuffer和StringBuilder来。
7、包装类和基本类型的选择 在代码中,如果可以使用基本数据类型来做局部变量类型的话尽量使用基本数据类型,因为基本类型的变量是存放在栈中的,包装类的变量是在堆中,栈的操作速度比堆快很多。
8、尽早的将不再使用的变量引用赋给null 这样做可以帮助jvm更快的进行内存回收。当然很多人其实对这种做法并不感冒。