我有一个基于JSF2.0的Web应用程序,运行在Tomcat 6和MySQL上。我使用特殊字符,例如“ąśżźć”。我能够从MySQL中读取数据并在网页上正确显示它们。但是当用户填写表单时,如果使用任何特殊字符,则在MySQL中这些字符会被替换为“?”。但是,如果我使用MySQL Workbench工具进行插入到数据库中,一切正常,并且特殊字符在网页上正确显示。
我的配置:
我的配置:
JSF - UTF-8 (for response and request character encoding)
MySQL columns are configured to use UTF-8, example: DESCRIPTION varchar(100) CHARACTER SET utf8 null
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
字符集设置为latin1会给我带来很大的问题。当使用UTF-8时一切正常,但是在latin1下不行。
我的托管公司不会更改MySQL设置,所以只能保留latin1 :-(。
我该如何解决这个问题?
我已经尝试了很多解决方案,比如创建过滤器、使用Charset和String.getBytes()进行转换。我已经想不到更好的办法了。
我正在使用org.apache.tomcat.jdbc.pool.DataSource进行连接。
String url ="jdbc:mysql://" + serverName + ":3306/" + databaseName + "?CharSet=utf8&useUnicode=true&characterEncoding=utf8";
第一次运行看起来似乎是可以工作的!请再给我24个小时进行测试。明天我会写反馈。非常感谢! - hopeman