0
我使用這個servlet來提取另一個域的HTML內容在我自己的Ajax頁面,包括,它指定響應爲「UTF-8」:如何處理的字符集的差異在Java中
public class ProxyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
String urlString = request.getParameter("url");
try {
URL url = new URL(urlString);
url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true);
char[] buf = new char[4 * 1024];
int len;
while ((len = reader.read(buf, 0, buf.length)) != -1) {
out.write(buf, 0, len);
}
out.flush();
}
catch (MalformedURLException e) {
throw new ServletException(e);
}
catch (IOException e) {
throw new ServletException(e);
}
}
}
我解壓的文件有一個meta標籤是這樣的:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
我複製並粘貼它放到自己的網頁,因此完全匹配。根據瀏覽器頁面信息,它是肯定使用「UTF-8」編碼。然而,我仍然在提取的html內容中使用「Â」而不是「& nbsp」。
它們實際上包含在這個ProxyServlet
的responseText中。我想明確地定義響應內容類型和輸出流charset會處理這個,但我必須錯過什麼?有沒有人解決過這個問題。
剛試過,沒有運氣。 – Geronimo 2012-04-14 18:12:07
查看我的更新回答。 – 2012-04-14 18:12:24
是的,它解決了它。謝謝。 – Geronimo 2012-04-14 18:56:12