部署JForum2.5.0,确定创建数据库时设置了UTF-8,安装向导里对数据库的编码格式也选择了UTF-8,但是发帖后页面显示中文全部为“??????”,检查了数据库里的对应表,写入数据库的同样是“??????”,因此判断问题产生的原因可能是写入数据库的数据编码有问题。
百度了一圈,发现解决办法多种多样,难以辨别。
经过验证,修改.\apache-tomcat-7.0.96\webapps\jforum\WEB-INF\config目录下的jforum-custom.conf文件,重启Tomcat后即可解决问题。
在database.connection.string的后面添加&useUnicode\=true&characterEncoding\=GBK即可。
database.connection.string=jdbc\:mysql\://${database.connection.host}\:${database.connection.port}/${database.connection.dbname}?user\=${database.connection.username}&password\=${database.connection.password}&autoReconnect\=true${mysql.unicode}${mysql.encoding}&useNewIO\=false&zeroDateTimeBehavior\=convertToNull&useServerPrepStmts\=false&dumpQueriesOnException\=true&jdbcCompliantTruncation\=false&useSSL\=false&useUnicode\=true&characterEncoding\=GBK
如果你遇到的问题与最上的描述一样,那么这个方法应该能解决问题。
如果不能成功的话,可以尝试以下的方法,希望能有用处:
1. 创建数据库时要指定编码utf-8;
2. 修改\WEB-INF\config\database\mysql\mysql.properties文件,找到database.connection.string参数,在这个参数值后面增加如下字符串: &useUnicode\=true&characterEncoding\=utf8;
3. 修改页面/表单编码 (WEB-INF\config\database\mysql\mysql.properties) encoding = UTF-8;
4. 修改WEB-INF\config\SystemGlobals.properties) 使dbencoding=utf-8 ;
5. 服务器编码,服务器编码要跟你的服务器一样.Tomcat默认为 iso-8859-1 (在WEB-INF\config\SystemGlobals.properties) 使default.container.encoding = ISO-8859-1