2011-09-13 11 views
0

現在、私のホームページでは多くのJavaクラスとMYSQLデータベースが完全にサポートされています。ÅØÆ - HTMLからのテキストエンコーディングの問題 - > Java - > MySQL - > Java - > HTML

私はHTML形式で視聴者がコメントを入力できるようにしています。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
String[] data = {in.readLine()}; 

コメントし、次でデータベースに解析されます:私が入力した場合

Connection conn; 
     forName("com.mysql.jdbc.Driver").newInstance(); 
     //String url = "jdbc:mysql://localhost/pagebuilder"; 
     String url = "jdbc:mysql://localhost/pagebuilder?useUnicode=true&characterEncoding=utf-8"; 
     //String url = "jdbc:mysql://localhost/pagebuilder?characterEncoding=utf-8";  
     String userName = "username"; 
     String password = "password"; 
     conn = DriverManager.getConnection(url, userName, password); 

     return conn; 
    } 

    public static void closeConnection(Connection conn) throws SQLException { 
     conn.close(); 
    } 

    public static void comment(String image, String name, String comment, String email){ 

    Connection conn = null; 
    try { 
     conn = Database.getConnection(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    if (conn != null) { 
     try { 
      java.sql.Timestamp sqlDate = new java.sql.Timestamp(new java.util.Date().getTime()); 

      PreparedStatement pstmt1 = conn.prepareStatement("INSERT INTO comment VALUES(0,?,?,?,?,?)"); 
      pstmt1.setTimestamp(1,sqlDate); 
      pstmt1.setString(2, image); 
      pstmt1.setString(3, name); 
      pstmt1.setString(4, comment); 
      pstmt1.setString(5, email); 

      pstmt1.executeUpdate(); 
      conn.close(); 
     } 

このテキストは、その後、私はテキストを読んでJavaクラスにCGIスクリプトによって解析されます次のように出力されæøpあるいはカンマなどの特殊文字デンマーク:

入力:,æøå

出力:%2C%C3%A6%C3%B8%C3%A5

入力と出力を同じにするにはどうすればよいですか?

私は、HTML、Java接続、データベースをUTF-8に設定しようとしましたが、運が無かったのです。

どうすればよいですか?

答えて

2

あなたのCGIプログラムは、そのようにコード化されたテキストを受け取ります。

%2Cは、カンマ(0x2cは16進数、32 + 12 = 44は10進数--44はアスキーカンマhttp://www.asciitable.com/index/asciifull.gif)のURLエンコードバージョンです。

% C3%でのA6は

% C3の%のB8はO

% C3は%A5のUTF-8でエンコードされたバージョンのURLエンコードバージョンであるæのUTF-8でエンコードされたバージョンのURLエンコードバージョンであります

UTF-8でエンコードされたバージョンのURLエンコードされたバージョンです。 (a)生のurlコード化ストリームをurldecodedストリームに変換します。 (b)あなたのurldecodedストリームをUTF-8として解釈します。

+0

完璧な、多くのありがとう。文字がデータベースに正しく挿入されるようになりました。今私はちょうどそれらを正しく取得し、それらを表示する必要があります。現在私は???を得る。あなたの助けに多くのおかげです。 –

+0

いつあなたは???を得ていますか? - ウェブブラウザから?それはmysqlコマンドラインクライアントから正しく表示されますか? – torstenvl

+0

Javaの出力ライターにエンコードを追加して修正しました。これで問題は解決し、すべてが今すぐ表示されるようになりました。もう一度、あなたの助けに感謝します。 –

関連する問題