- - PR -
テーブルのアップロードで文字化け
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-04-20 13:09
データベースにテーブルの内容をアップするプログラムを
作りましたが(某書籍参照)日本語のみ文字化けをするので 対処方法が見つかりません。 申し訳ありませんが、教えて下さい。 読込んだデータを変換しないといけないのは分かるんですが・・・。 通常、フォームから読込んだデータはエンコードして 文字化けは、起きないようにしているのですが、 ファイルになっているので?? アップしたTXT(タブ区切り)は、 -------------------- 1 aaaあああ -------------------- ↓結果 -------------------- 1 aaa??? -------------------- です。 環境 os:redhat9 db:postgres7.4.7(EUC-JP) tomcat --------------------------------- 以下ソースファイル ---------------------------------------- import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.Properties; import java.util.StringTokenizer; import javax.mail.BodyPart; import javax.mail.Session; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DB extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int i, intDat = 0, intErr = 0; String strDat = null; response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); Connection conn = null; PreparedStatement prst = null; try { ServletContext application = getServletConfig().getServletContext(); ServletInputStream objInp = request.getInputStream(); ByteArrayOutputStream objBops = new ByteArrayOutputStream(); PrintStream objPStr = new PrintStream(objBops, true); objPStr.print("Content-Type: " + request.getContentType()); objPStr.println(System.getProperty("line.separator")); while ((i = objInp.read()) != -1) { objBops.write(i); } Properties objPrp = System.getProperties(); Session objSes = Session.getDefaultInstance(objPrp); MimeMessage objMsg = new MimeMessage(objSes, new ByteArrayInputStream(objBops.toByteArray())); BodyPart objBP = ((MimeMultipart) objMsg.getContent()).getBodyPart(0); InputStreamReader objIS = new InputStreamReader(objBP.getInputStream()); BufferedReader objBR = new BufferedReader(objIS); Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection("jdbc:postgresql:**********", "********", "**********"); prst = conn.prepareStatement("INSERT INTO list_busyo(id_busyo,name_busyo) VALUES(?,?)"); out.println("<html><head><title>処理結果</title></head><body>"); out.println("<h1>アップロード処理結果</h1><hr />"); out.println("<p>以下のデータについて、エラーが発生しました</p>"); out.println("<table border='0'>"); out.println("<tr style='background:#CCddFF'><th>エラー行</th>"); out.println("<th>エラーメッセージ</th><th>投入データ</th></tr>"); while (objBR.ready()) { try { strDat = objBR.readLine(); StringTokenizer objTkn = new StringTokenizer(strDat, "\t"); ArrayList objAry = new ArrayList(); while (objTkn.hasMoreTokens()) { objAry.add(objTkn.nextToken()); } Object[] aryData = objAry.toArray(); prst.setInt(1, Integer.parseInt((String) aryData[0])); prst.setString(2, (String) aryData[1]); prst.executeUpdate(); } catch (Exception e) { ++intErr; out.println("<tr>"); out.println("<td align='right'>" + (intDat + 1) + "行</td>"); out.println("<td>" + e.getLocalizedMessage() + "</td>"); out.println("<td>" + strDat + "</td>"); out.println("</tr>"); } ++intDat; } } catch (Exception e) { e.printStackTrace(); } finally { out.println("</table><p><b>" + intDat + "</b>件のデータ中、<b>"); out.println(intErr + "</b>件のエラーが発生しました</p>"); out.println("</body></html>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } | ||||||||
|
投稿日時: 2005-04-20 13:52
ファイルの文字コードが書いてないので、とりあえずEUC-JP想定で書きますが……
↓
こんな感じで修正すればうまくいったりしませんか? | ||||||||
|
投稿日時: 2005-04-20 17:11
永井和彦様
ありがとうございます、うまくいきました!! これで何とかデータベースにアップ出来ます。 |
1