【问题标题】:Reading Greek text from jdbc / SQL Server 2005 and displaying it with a servlet从 jdbc / SQL Server 2005 读取希腊文本并使用 servlet 显示它
【发布时间】:2011-02-07 11:56:24
【问题描述】:

好吧,主题说明了一切,但我将进一步解释。

我在 MS SQL server 2005 中有一个包含希腊文本的数据库。我创建了一个使用net.sourceforge.jtds.jdbc.Driver 连接到该数据库的servlet,并使用以下命令接收一些数据:

Connection con = DriverManager.getConnection(connectionUrl);
Statement sta = con.createStatement(); 
ResultSet res = sta.executeQuery("SELECT * FROM data");

之后,我想使用output.println 将数据显示到页面。结果是希腊字符显示为问号 (?)。我尝试更改浏览器的编码字符集,但没有运气,所以问题一定出在页面上。我也试过显示

new String( res.getBytes("text"), "ISO-8859-7");

而不是res.getString("text"),使用不同的编码(UTF-8、UTF-16),但还是不行!

我该怎么做才能看到希腊字符?

【问题讨论】:

    标签: java sql-server unicode servlets jdbc


    【解决方案1】:

    您需要将response encoding 设置为UTF-8。由于您通常使用 JSP 来显示数据,因此您可以通过在 JSP 页面顶部放置以下行来做到这一点:

    <%@ page pageEncoding="UTF-8" %>
    

    另请参阅this article,了解更多背景信息以及 Java EE Web 应用程序需要考虑的所有其他方面。

    【讨论】:

    • 我使用的是 servlet 而不是 JSP,但是关于 unicode 的文章很棒!
    【解决方案2】:

    问题可能出在多个位置。全部检查:

    • 数据库编码
    • 连接编码
    • 响应编码 (response.setCharacterEncoding("utf-8"))

    【讨论】:

    • 问题出在响应编码上。添加行 response.setContentType ("text/html;charset=utf-8");解决了问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2016-04-02
    • 2013-03-21
    相关资源
    最近更新 更多