###概要
表題の通り、Eclipseで動的Webプロジェクトを作って
jspからWEB-INF内のjavascriptを呼び出すと日本語文字化けが起こります。
色々と試しましたが、解決方法を知りたいです。
ご存知の方がいらっしゃればよろしくお願いします。
###前提
・Eclipse4.7.0
・Tomcat8
・文字コードはUTF-8です。
・Mainサーブレットからindex.jspをフォワードしたのち、script.jsをincludeします
・ディレクトリ構造はjavaリソースのservletパッケージにMain.java(サーブレット)、
WebContent/WEB-INF/jsp/にindex.jsp
WebContent/WEB-INF/js/にscript.jsとします。
・WEB-INF外に配置したjavascriptを呼び出した場合には
日本語文字化けが起こりません。
・文字コードはUTF-8じゃなくても文字化けさえ解決すればいいです。
###自分で調べたこと
・サーブレットに
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");を指定すること、
・scriptタグのcharsetにUTF-8を指定すること
・jspにContentType及びpageEncodingを指定すること、
・jspにrequest.setCharacterEncoding("UTF-8");を指定すること
・Eclipse上でそれぞれのファイルのプロパティを開いて文字コードを指定すること
・Eclipse上で実行構成を開いて文字コードを指定すること
は既に試しましたが、功を奏しませんでした。
###ファイル一覧
Java
1//Main.javaサーブレット 2package servlet; 3 4import java.io.IOException; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13/** 14 * Servlet implementation class Main 15 */ 16@WebServlet("/Main") 17public class Main extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 public Main() { 21 super(); 22 // TODO Auto-generated constructor stub 23 } 24 25 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 26 response.getWriter().append("Served at: ").append(request.getContextPath()); 27 28 response.setContentType("text/html; charset=UTF-8"); 29 request.setCharacterEncoding("UTF-8"); 30 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/index.jsp"); 31 dispatcher.forward(request, response); 32 } 33}
Java
1//index.jsp 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>Insert title here</title> 9<%@ include file="../js/script.js" %> 10</head> 11<body> 12This is Test 13</body> 14</html>
javascript
1//script.js 2<script charset="UTF-8"> 3alert("テストです"); 4</script>
何卒よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。