電子書籍の厳選無料作品が豊富!

org.apache.jasper.JasperException: ERROR: character 0xc282 of encoding "UTF8" has no equivalent in "EUC_JP"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


原因

javax.servlet.ServletException: ERROR: character 0xc282 of encoding "UTF8" has no equivalent in "EUC_JP"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.jsp.sub_jsp._jspService(sub_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


原因

org.postgresql.util.PSQLException: ERROR: character 0xc282 of encoding "UTF8" has no equivalent in "EUC_JP"
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:337)
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:329)
atmarkit.MyDBAccess.execute(MyDBAccess.java:65)
org.apache.jsp.jsp.sub_jsp._jspService(sub_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

おそらく文字の変換がいけないと思いますが、対処方法がわからないです・・
<ソース>の一部
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="java.sql.*,atmarkit.MyDBAccess" %>
<%
while(rs.next()) {
int id = rs.getInt("member_id");
String name = rs.getString("name");
String age = rs.getString("age");
int state = rs.getInt("attendance");
String comment = rs.getString("comment");
name = new String(name.getBytes("8859_1"), "Shift_JIS");
if(comment != null) {
  comment = new String(comment.getBytes("8859_1"), "Shift_JIS");
}
%>
詳しい方いらしゃったら、教えてください。
よろしくお願いします。

A 回答 (4件)

>8859_1→ISO8859_1では?



8859_1はISO8859_1の省略形で同義ですのでこれは問題ありません。

>name = new String(name.getBytes("8859_1"), "Shift_JIS");

Shift_JISとありますが、このJSPへリクエストを発行する画面のエンコードはShift_JISになっていますか?
おそらくIEだと思いますが、画面を表示したら表示→エンコードから確認してください。
ついでに、JavaのShift_JISはWindowsのShift_JISではありません。
WindowsのShift_JISはマイクロソフト拡張が入っていますので、
JavaではWindows-31J(もしくはMS932など)と記述します。
こうしないと丸付きの1などが正しく扱えません。

>英文字はいけましたけど、日本語だとエラーでますね。

半角英文字ですよね?
半角英文字はASCIIコードと言って、どんな文字コードでも必ず同じコード値で同じ文字になりますので、文字コードを間違えていても
エラーになっていないのでしょう。

この回答への補足

回答ありがとうございます。ちょっと長くなってしまいますので、
新しく立てます。

補足日時:2007/04/18 17:54
    • good
    • 0

これは、「UTF-8の0xC282はEUC_JPに変換できない」ってエラーですよね。


そもそも、JSPの中で、一旦latinでgetByteして、SJISにエンコードしたものを、UTF-8(JAVAのString)に入れている・・・ってのが
よくわからないんですが。
そんなことしなくても、JDBCドライバレベルでエンコード・デコードされているはずなので、意識する必要はないんじゃないでしょうか?
http://www.hellohiro.com/jdbcpostgresql.htm
これが、EUC_JPでcreatedbしたものを、JAVAから扱っているサイトですが、特にencodingはしてませんよね?

どうしても意識したければ、
PostgreのCライブラリ:int PQsetClientEncoding(*con, *encoding);
みたいなものを作る必要があるんじゃないでしょうか。
    • good
    • 0

>org.postgresql.util.PSQLException: ERROR: character 0xc282 of encoding "UTF8" has no equivalent in "EUC_JP"



これってPostgreSQL使ってますよね?
エラーメッセージそのままで、DBがEUCでEUCにない文字を入れようとして落ちてるのでは?
PostgreSQLのJDBCドライバ仕様は詳しくないのですが、
親切に例外にしてくれているんではないでしょうか。

この回答への補足

回答ありがとうございます。
PostgreSQLを使ってます。
なんででしょうね。
英文字はいけましたけど、日本語だとエラーでますね。
もうちょっと粘ります。。

補足日時:2007/04/18 16:51
    • good
    • 0

8859_1→ISO8859_1では?



参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/ …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
それとあまり関係ないと思いますね。
String comment = request.getParameter("comment");
~略
String sql = "update shainlist set comment='" + comment
+ "', attendance=" + attendance
+ " where member_id=" + member_id;
テキストボックス英文字いれると表示できますが、
日本語だとエラーがでます。
jsp保存するとき、文字コードはどれにしたらいいのでしょうか

お礼日時:2007/04/18 16:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!