JSP不会以英语以外的语言显示DB中的文本

时间:2016-04-22 11:45:40

标签: java jsp character-encoding

我的JSP中有以下代码

  ... <%
    out.println(request.getAttribute("textFromDB")); %> ...

当调用JSP时,它只打印问号(???? ..),而不是存储在非英语的MySQL数据库中的实际文本。我该怎么做才能使它正确显示文本。我试图将charset和pageEncoding更改为UTF-8,但它没有帮助。

2 个答案:

答案 0 :(得分:0)

Isn编码不错吗?不幸的是,很难说它出错了:您的数据库可能存储在另一个字符集中而不是UTF-8。或者您的数据库驱动程序可能配置为使用其他编码。或者您的服务器默认为另一个。或者您的HTTP连接采用不同的编码,并且您的字符集更改太晚了。

您必须经历所有这些层 - 请记住,一切都可能看起来很好,这是对数据库的长期写入操作已经搞砸了数据而无法修复

答案 1 :(得分:0)

System.out.println(this.request.getHeader("Content-Encoding")); //check the content type 

String data = new String(this.request.getParameter("data").getBytes("ISO-8859-1"), "UTF-8"); //this way it is encoded to byte and then to a string

如果上述方法无效,您可能需要查看database 如果它编码characters to "UTF-8"

你可以配置URIEncoding =&#34; UTF-8&#34;在您的tomcat设置中,只需(request.getAttribute("textFromDB"));完成剩下的工作。