【问题标题】:Read emojis from a local SQLite database in Java从 Java 中的本地 SQLite 数据库中读取表情符号
【发布时间】:2017-11-22 02:04:20
【问题描述】:

我正在构建一个示例应用程序,它将对话从 iOS 短信数据库文件转换为可读的 html 页面。

但在控制台和 html 页面中,表情符号显示为“?”但在 DB 浏览器中它们显示得很好。

HTML 预览示例:

还有我的代码:

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();

}

【问题讨论】:

    标签: java sql emoji


    【解决方案1】:

    确保您的 HTML 页面在元标记中使用正确的字符集:

    <meta charset="utf-8" />
    

    一般来说,在将特殊字符放入 HTML 时,将它们编码为 HTML 实体也是一个好主意。根据this answer,你可以用Java的StringEscapeUtils.escapeHtml()方法做到这一点。

    【讨论】:

    • 感谢您的回答,但现在它们在 html 上显示为 �,但它们确实说 ''和控制台中的类似
    • 我建议您通过W3 Validator 运行您的页面输出。它可能会识别您页面上的一些编码问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2016-04-13
    • 1970-01-01
    • 2011-04-26
    • 2020-04-17
    相关资源
    最近更新 更多