req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
if (req.getPart("photo") != null
&& req.getPart("photo").getSize() != 0) {
Part pt = req.getPart("photo");
HttpURLConnection conn = (HttpURLConnection) new URL(HTTPURL + servlet).openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod(HTTP_METHOD_POST);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setRequestProperty("Content-type", "multipart/form-data;boundary=" + BOUNDARYSTR);
conn.connect();
//PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));
BufferedOutputStream out = new BufferedOutputStream( conn.getOutputStream());
Map postMap = new HashMap<String, String[]>();
postMap.putAll(req.getParameterMap());
postMap.remove("photo");
StringBuilder sb = new StringBuilder();
Iterator iter = postMap.entrySet().iterator();
Iterator<String> it = postMap.keySet().iterator();
while (iter.hasNext()) {
String str = it.next();
Map.Entry me = (Entry) iter.next();
String[] varr = (String[]) me.getValue();
sb.append(BOUNDARY);
System.out.println(Arrays.toString(varr));
sb.append("Content-Disposition:form-data;name=\"");
sb.append(me.getKey());
sb.append("\"\r\n\r\n");
sb.append(URLEncoder.encode(varr[0], "UTF-8"));
sb.append("\r\n");
}
out.write(sb.toString().getBytes());这里打印出来的中文是???,如果我打印URLEncoder.encode(varr[0], "UTF-8")他就使乱码,目测但是这里的这个varr,在debug时能看到他正常的中文值,求解,怎么弄才能不乱码,java;中文;乱码;j2ee
resp.setCharacterEncoding("UTF-8");
if (req.getPart("photo") != null
&& req.getPart("photo").getSize() != 0) {
Part pt = req.getPart("photo");
HttpURLConnection conn = (HttpURLConnection) new URL(HTTPURL + servlet).openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod(HTTP_METHOD_POST);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setRequestProperty("Content-type", "multipart/form-data;boundary=" + BOUNDARYSTR);
conn.connect();
//PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));
BufferedOutputStream out = new BufferedOutputStream( conn.getOutputStream());
Map postMap = new HashMap<String, String[]>();
postMap.putAll(req.getParameterMap());
postMap.remove("photo");
StringBuilder sb = new StringBuilder();
Iterator iter = postMap.entrySet().iterator();
Iterator<String> it = postMap.keySet().iterator();
while (iter.hasNext()) {
String str = it.next();
Map.Entry me = (Entry) iter.next();
String[] varr = (String[]) me.getValue();
sb.append(BOUNDARY);
System.out.println(Arrays.toString(varr));
sb.append("Content-Disposition:form-data;name=\"");
sb.append(me.getKey());
sb.append("\"\r\n\r\n");
sb.append(URLEncoder.encode(varr[0], "UTF-8"));
sb.append("\r\n");
}
out.write(sb.toString().getBytes());这里打印出来的中文是???,如果我打印URLEncoder.encode(varr[0], "UTF-8")他就使乱码,目测但是这里的这个varr,在debug时能看到他正常的中文值,求解,怎么弄才能不乱码,java;中文;乱码;j2ee
out.write(sb.toString());直接在页面打印字符串即可,干嘛还要转换字节额
在这里加上编码就行了