[請益] openfire offline message中文沒有進DB

看板Soft_Job作者 (HD)時間11年前 (2014/05/12 15:17), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
各位業界先進好 小弟大學畢業剛考完研所 現在很無聊等入學的時候 寫一些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給官方 請他們處理了? 還是我哪裡弄錯了 其實是可以解決的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.113.27 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1399879074.A.6AA.html

05/12 16:22, , 1F
dump jdbc insert 時的 sql, 沒有 escape ?
05/12 16:22, 1F

05/12 16:53, , 2F
剛剛把openfire整個移除重新建DB 在一開始就設定好utf8後
05/12 16:53, 2F

05/12 16:53, , 3F
就可以正常儲存中文的offline message了
05/12 16:53, 3F

05/12 17:01, , 4F
回去看jdbc的url 原本安裝過程中填寫的"&" 被翻譯成
05/12 17:01, 4F

05/12 17:01, , 5F
& 存在xml中 所以這應該就是原因了 網路上的解法
05/12 17:01, 5F

05/12 17:01, , 6F
應該只適用於舊版
05/12 17:01, 6F
文章代碼(AID): #1JS7MYQg (Soft_Job)