Ajax+Servletで文字化け
Ajax+Servletで"I"、"II"等が文字化けしてしまいます。
以下のようにajaxを使いserver側のservletへアクセスしています。
xmlhttp = this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Msxml2.XMLHTTP");
//コールバック関数の登録
xmlhttp.onreadystatechange = display;
xmlhttp.open('POST','Test',true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(null);
フトントの画面はJSPで
<%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
で定義しています。
サーブレットはpostgresのDBから項目を取得し、htmlを返却しています。
返却したhtmlをDOMのinnterHTMLを使い、画面を書き換えています。
response.setContentType("text/html; charset=Windows-31J");
servletからhtmlを返却する際、上記のようにWindows-31Jで返却すると、javascriptで"xmlhttp.responseText"の所で
"ランタイムエラーが発生しました。デバックしますか 行107 c00ce56eの為、操作を完了できませんでした。"
とエラーが出てしまいます。
response.setContentType("text/html; charset=shift-jis");
出力する際、上記のようにShift-jisで返却すると、エラーは発生しないのですが、"I"、"II"等が文字化けしてしまいます。
何か解決策ありますでしょうか。
宜しくお願いします。
補足
早速のご回答、まことにありがとうございます。 charsetの指定はhtmlタグの直前で、 <%@ page contentType="text/html; charset=Windows-31J" session="false" %> という指定を行っております。