在ubuntu中使用java(tomcat服务器)和mysql组合打印gujrati或hindi时,我遇到了一些挑战。我必须产生一些html格式使用java从mysql数据库将通过浏览器显示。同样的内容也将使用wkhtmltopdf以pdf格式打印。虽然我可以通过mysql workbench在gujarati的表中输入数据,但不幸的是java将其打印为 ?????
.
我做了以下工作:
1) 修改了对应mysql表的文本列
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
因此,它可以正确地存储古吉拉特语/印地语文本。
2) 在jdbcurl中,我添加了
useUnicode=true&characterEncoding=utf8
在mysql级别,我已经申请了
SET character_set_server=utf8mb4;
3) 在我应用的java代码中
System.setProperty("file.encoding", "UTF-8");
它还在回来 ?????
. 请让我知道还有什么需要从mysql数据库中提取gujrati字符在ubuntu中使用java并通过浏览器显示它。
事先谢谢你的帮助。
2条答案
按热度按时间iovurdzv1#
-->
您说该列现在设置为“character set utf8 collate utf8\u unicode\u ci;”。是的
INSERT
完成后ALTER
? 如果是以前的话,那么没有什么能解决这些问号。b09cbbtk2#
最终可以解决。我在tomcat服务器的jsp文件夹中保存了一个包含gujrati字符的简单test.html文件。即使这样也无法在浏览器中正确显示。同样的html文件被保存为test.jsp,它也不能显示字符。因此,这暗示了这不是一个javamysql组合的问题。
在同一个ubuntu服务器中,我们有php服务器。从托管在该php服务器上的站点,当通过同一浏览器调用时,可以正确地查看这个简单的html页面。这提供了一个线索,即在ubuntu级别不需要更改,但在tomcat服务器级别需要一些配置。
解决方法如下所述。
1) 在servlet级别,我放了以下两行代码:
2) 对于jsp页面放置:
3) 在tomcat的server.xml中,将uriencoding=“utf-8”放在connector元素中。
4) 在web.xml中,我为jsp页面添加了以下内容
这样,jsp文件夹(jsp或html页面)中的任何内容都可以显示unicode字符。把这个放在test.html之后,test.jsp就可以正确地显示字符了。但是,servlet仍然无法显示字符。因此,采用了下述步骤。
5) 正如一些讨论页面中所建议的,我应用了指定的java过滤器,并在web.xml中添加了相应的标记,如下所示。
然后在web.xml中添加以下标记:
应用此功能后,servlet(它发送由java代码从mysql生成的html)现在可以在浏览器中显示古吉拉特语/印地语字符。我相信同样的技巧也适用于任何这样的语言。
下面的讨论链接帮助我解决了这个问题。
https://wiki.duraspace.org/pages/viewpage.action?pageid=34638116
如何让utf-8在javawebapps中工作?
utf-8格式在tomcat服务器的servlet中不起作用
https://dertompson.com/2007/01/29/encoding-filter-for-java-web-applications/