2017-11-21 17 views
0

iOSのsmsデータベースファイルから読みやすいHTMLページに会話を変換するサンプルアプリケーションをビルドします。JavaのローカルSQLiteデータベースからemojisを読み込みます。

しかし、コンソールとhtmlページで、emojisは '?'と表示されます。 DBブラウザーでは問題なく表示されます。 HTMLプレビューの

例: Example of the HTML page

そして、私のコード:

public static void main(String[] args) throws SQLException, IOException { 

    String url = "jdbc:sqlite:C:/test/sms2.db"; 

    Connection conn = DriverManager.getConnection(url); 

    Statement s = conn.createStatement(); 

    ResultSet rs = s.executeQuery("SELECT handle_id,is_from_me,text FROM message"); 

    File f = new File("C:\\Users\\theda\\Documents\\Messages\\convo\\+1**********.html"); 
    if(!f.exists()) 
     f.createNewFile(); 
    FileWriter w = new FileWriter(f); 
    WriterOutputStream write = new WriterOutputStream(w, Charset.forName("utf8")); 

    w.append("<link rel='stylesheet' type='text/css' href='message.css'>"); 
    w.append("<body>"); 

    while(rs.next()){ 
     if(rs.getInt("handle_id") == 3){ 
      String st = " "; 
      String fromMe = " "; 
      if(rs.getInt("is_from_me") == 1) 
       fromMe = "true"; 
      else 
       fromMe = "false"; 
      st = "<div class='message' data-outgoing='" + fromMe + "'>" + rs.getString("text") + "</div><br>"; 

      System.out.println(st); 
      w.append(st); 
     } 
    } 

    w.append("</body>"); 
    w.close(); 

} 

答えて

1

は、あなたのHTMLページがメタタグで正しい文字セットを使用していることを確認してください:で

<meta charset="utf-8" /> 

を一般的に、特殊文字をHTMLエンティティとしてエンコードすることもHTMLにエンコードすることをお勧めします。 this answerによれば、JavaのStringEscapeUtils.escapeHtml()メソッドでこれを行うことができます。

+0

ありがとうございましたが、今ではHTMLで「as」と表示されますが、「&#55356;コンソールでも同様です – DarkLlama

+0

[W3 Validator](https://validator.w3.org/)からページ出力を実行することをお勧めします。あなたのページのエンコーディングの問題を特定するかもしれません。 –

関連する問題