java保存html文件乱码

注意最后写入文件的时候编码要为gb2312.

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
List<FileItem> fileItems = servletFileUpload.parseRequest(request);

for (FileItem fileItem : fileItems) {
	if (fileItem.isFormField()) {
		String FieldName = fileItem.getFieldName();
		// getName()返回的是文件名字普通域没有文件返回NULL
		String Content = fileItem.getString("UTF-8");
		request.setAttribute(FieldName, Content);
	} else {
		String nm = fileItem.getName().substring(
				fileItem.getName().lastIndexOf("\\") + 1);
		File file = new File(path);
		if (!file.exists()) {
			file.mkdirs();// 文件夹找不到,创建文件夹
		}
		File mkr = new File(path, nm);
		if (nm.indexOf(".html") > 0) {
			String html = getReadToString(
					fileItem.getInputStream(), "gb2312");
			StringBuilder sb = new StringBuilder();
			try {
				Parser parser = new Parser();
				parser.setInputHTML(html);
				parser.setEncoding("gb2312");

				NodeIterator it = parser.elements();

				while (it.hasMoreNodes()) {
					Node node = it.nextNode();
					node.accept(new NodeVisitor() {
						public void visitTag(Tag tag) {
							if (tag instanceof LinkTag) {
								LinkTag link = (LinkTag) tag;

								link.setAttribute("target",
										"_blank");

							}
						}
					});
					sb.append(node.toHtml());
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
//						FileWriter fw = new FileWriter(mkr);
//						fw.write(sb.toString());
//						fw.close();
			Writer writer = new BufferedWriter(
					new OutputStreamWriter(
							new FileOutputStream(mkr), "gb2312"));
			writer.write(sb.toString());
			writer.flush();
			writer.close();
		} else {
			fileItem.write(mkr);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值