解決openfire在使用MySQL資料庫後的中文亂碼問題

來源:互聯網
上載者:User

openfire是一個非常不錯的IM伺服器,而且是純Java實現,具有多個平台的版本,他的資料存放區可以採用多種資料庫,如MySQL,Oracle等。

在實際使用時大家遇到最多的就是採用MySQL資料庫後的中文亂碼問題,這個問題十分有趣,而且從現象上可以看出openfire內部的一些機制。

實際問題是這樣的:首先啟動openfire伺服器,然後利用用戶端或直接登入到後台建立一個帳戶,為該帳戶指定一些中文的屬性,如姓名等。如果不重啟伺服器,你永遠不會覺得有什麼不對的地方,因為所有的中文顯示都是正常的。接下來重啟一下openfire,再用建立的帳號登入用戶端或進入後台管理端查看,會發現所有的中文全都變成了問號。登入到資料庫中進行查看,發現所有的中文字元也均為問號,這說明了兩個問題:

openfire具有應用程式層緩衝
資料庫編碼存在問題
解決辦法其實也很簡單,首先要保證你為openfire建立的資料庫編碼是utf8的,建表語句如下:

create database openfire default character set utf8 default collate utf8_general_ci

當你原來就建立好資料庫時,你可以用:

 alter database openfire default character set utf8 default collate utf8_general_ci;

其次,在初始化openfire資料庫,即第一次配置openfire伺服器時,在串連資料庫那裡的串連串要加入字元編碼格式,必須在串連裡增加UTF8的編碼要求,連接字串設定如下:

jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8

如果已經安裝完成,這個配置也是可以改動的,直接到openfire的安裝目錄下,找到conf/openfire.xml這樣一個檔案,開啟找到如下的XML節,修改其中的serverURL即可

<database>
<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&amp;characterEncoding=utf8</serverURL>

注意:由於&具有特殊含義,因此原&符號必須被轉義為&amp;

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.