[请益] openfire offline message中文没有进DB

楼主: banjmin (HD)   2014-05-12 15:17:52
各位业界先进好
小弟大学毕业刚考完研所 现在很无聊等入学的时候
写一些Web作品 遇到一些问题 我写了一个像logdown的部落格网站
后端用的是Laravel 4.1
注册以后 可以用markdown & latex写文章 并给大家浏览
用的是MathJax和Showdown.js
最近看一些Webconf PHPconf的影片对于像Facebook 那样的WebRTC
也有兴趣 所以我用了openfire 3.9.3 xmpp Server 与部落格都使用 MySQL储存
是希望方便整合在一起 可以管控 文章资料 包含对话内容 user资料 offline message等
配合Strophe.js 透过BOSH做不同port的cross domain request
写了一个小FB的功能 加进去原本的部落格网站
中间也遇到很多问题 不过透过安装openfire plugin 或看manual
及google文章 相似解法都能修改成 解决我的问题的方法
但是写了一个星期多这两天这个问题一直解不了:
当一方user下线后 另一方传送的讯息 会存在ofoffline table中
openfire database已经是utf8编码 与utf8_general_ci排序
openfire.xml若是照此设定
jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true
offline message可以存进DB的只有英文和数字 若是中文字符全部会变成"?"
照网络上的解法 jdbc:mysql://localhost:3306/openfire后的设定改成
?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
英文数字 的offline message仍然可以存进DB 但是变成只要有中文字符的message
连insert都没有成功 可是平常双方都在线上时的沟通
中文都是可以正常显示的 也可以顺利insert中文对话进
ofmessagearchive table中 并保留30天内的对话记录
到这边我完全无解 看起来应该是offline message的储存编码机制与其他function不同
网络上的解法可能也是早期版本适用的东西
原本想继续完成像FB那样打开对话框 可以Ajax显示历史讯息的功能
但是就卡在offline message的编码问题
我是不是只能提交ticket给官方 请他们处理了?
还是我哪里弄错了 其实是可以解决的?
作者: chrisQQ (ChrisLiu)   2014-05-12 16:22:00
dump jdbc insert 时的 sql, 没有 escape ?
楼主: banjmin (HD)   2014-05-12 16:53:00
刚刚把openfire整个移除重新建DB 在一开始就设定好utf8后就可以正常储存中文的offline message了回去看jdbc的url 原本安装过程中填写的"&" 被翻译成& 存在xml中 所以这应该就是原因了 网络上的解法应该只适用于旧版

Links booklink

Contact Us: admin [ a t ] ucptt.com