データベース文字エンコード設定

Confluence と併用するデータベースは Confluence と同じ文字エンコードを使用するように設定します。推奨されるエンコードは Unicode UTF-8 (同等の Oracle データベースは AL32UTF8) です。

文字エンコードの設定が必要になると考えられる場所が2つあります。

  • データベースの作成時
  • データベースへの接続時 (JDBC 接続 URL またはプロパティ)

データベースの各タイプの設定詳細は異なります。いくつかの例を以下に示します。

JDBC 接続設定

MySQL

"useUnicode=true" を JDBC URL に追加します。

jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8

If you are modifying confluence.cfg.xml directly rather than via the Confluence Installation GUI, you'll need to escape out the & in the URL string as this is a reserved XML token and will break the syntax when the XML is parsed. An effective URL could be similar to:

<property name="hibernate.connection.url">jdbc:mysql://hostname:port/database?useUnicode=true&amp;characterEncoding=utf8</property>

UTF-8 データベースの作成

MySQL

  1. バイナリ UTF-8 照合順序で UTF-8 データベースを作成します。
    (info)バイナリ UTF-8 照合順序は大文字/小文字を区別します。

    CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;
    
  2. You will also need to set the Server Characterset to utf8. This can be done by adding the following in my.ini for Windows or my.cnf for other OS. It has to be declared in the Server section, which is the section after [mysqld]:

    [mysqld]
    default-character-set=utf8
    


    上記のオプションが動作しない場合、default-character-set=utf8 の代わりに character_set_server=utf8 を使用してみてください。

  3. Use the status command to verify database character encoding information.

    Screenshot: Using the Status Command to Verify Database Character Encoding

  4. 場合によっては、 個々の表の照合順序および文字エンコーディングは、使用するために設定された全体としてのデータベースのものと異なることがあります。以下のコマンドを使用して、Confluence データベース内のすべての表が UTF-8 文字エンコーディングとバイナリ UTF-8 照合順序を使用するように正しく設定されていることを確認してください。

    use confluence;
    show table status;
    

    Check for the value listed under the Collation column, to ensure it has been set to utf8_bin (that is, case-sensitive) collation for all tables.
    If not, then this can be changed by the following command, executed for each table in the Confluence database:

    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
    

    上記の <tablename> を Confluence データベース内の各表に置き換えてください。

より詳細な説明については、次の関連 MySQL マニュアルを参照してください。

PostgreSQL

CREATE DATABASE confluence WITH ENCODING 'UNICODE';

またはコマンドラインから

$ createdb -E UNICODE confluence

詳細は、PostgreSQL ドキュメントを参照してください。

Windows で稼働する PostgreSQL

国際文字セットは、Microsoft Windows で PostgreSQL 8.1 以上を使用している場合にのみ完全にサポートされ、機能するので注意が必要です。

Linux で稼働する PostgreSQL

データベース内の国際文字が適切に処理されるように、次のことを必ず確認してください。

When PostgreSQL creates an initial database cluster, it sets certain important configuration options based on the host enviroment. The command responsible for creating the PostgreSQL environment initdb will check environment variables such as LC_CTYPE and LC_COLLATE (or the more general LC_ALL) for settings to use as database defaults related to international string handling. As such it is important to make sure that your PostgreSQL environment is configured correctly before you install Confluence.

To do this, connect to your PostgreSQL instance using pgsql and issue the following command:

SHOW LC_CTYPE;

If LC_CTYPE is set to either "C" or "POSIX" then certain string functions such as converting to and from upper and lower case will not work correctly with international characters. Correct settings for this value take the form <LOCALE>.<ENCODING> (en_AU.UTF8 for example).

If your LC_CTYPE is incorrect please check the PostgreSQL documentation for information on configuring database localisation. It is not easy to change these settings with a database that already contains data.

既存のデータベースを UTF-8 に更新する

既存のデータが含まれる MySQL データベース

既存のデータベースの場合

既存のデータベースを使用している場合、次のクエリを実行することで、文字エンコードを確認します。
SHOW VARIABLES LIKE 'character%'; および SHOW VARIABLES LIKE 'collation%';
結果は、UTF-8 になるはずです。

以降の変更に進む前に、データベースをバックアップしてください。

次の例は、データベースを latin1 から utf8 へ変更する方法を示しています。この例では、データベース名は「confluence」です。

  1. Dump the database (except the plugindata table) to a text file using the mysqldump tool from the command-line :
    mysqldump -p --default-character-set=latin1 -u <username> --skip-set-charset --ignore-table='`confluence`.plugindata' --ignore-table='`confluence`.attachmentdata' confluence > confluence_database.sql
  2. Dump the plugindata and attachmentdata tables to a text file using mysqldump separately. This is done separately as the recode step below can corrupt the binary data in these tables :
    mysqldump -p --default-character-set=latin1 -u <username> --skip-set-charset confluence attachmentdata plugindata > confluence_blobtables.sql
  3. copy confluence_database.sql to confluence_utf8.sql
  4. Open confluence_utf8.sql in a text editor and change all character sets from 'latin1' to 'utf8'
  5. Encode all the latin1 characters as UTF-8:
    recode latin1..utf8 confluence_utf8.sql (the recode utility is described at http://directory.fsf.org/recode.html; it can actually be downloaded from http://recode.progiciels-bpi.ca/, and is available for Ubuntu via apt-get)

MySQL の場合:

  1. DROP DATABASE confluence;
  2. CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;

UTF-8 テキストファイル、plugindata および attachmentdata ダンプをを再インポートします。

  1. mysql -u <username> -p --default-character-set=utf8 --max_allowed_packet=64M confluence < /home/confluence/confluence_utf8.sql
  2. mysql -u <username> -p --default-character-set=latin1 --max_allowed_packet=64M confluence < /home/confluence/confluence_blobtables.sql

大容量のインポートをサポートするために、上記で使用されたパラメーター '--max_allowed_packet=64M' が SQL 文の最大サイズを非常に大きな値に設定します。状況によっては、特に、添付ファイルがデータベースに保存されている場合など、さらに値を大きくする必要がある場合もあります。

最後に、plugindata 表および attachmentdata 表は実際には前に変換されていないため、すべてのテキストフィールドを変換するように MySQL を使用して手動で次のように指定します。

  1. ALTER TABLE plugindata CONVERT TO CHARACTER SET utf8;
  2. ALTER TABLE attachmentdata CONVERT TO CHARACTER SET utf8;

データベースエンコードをテストする

データベースエンコードが正しく動作することを確認するために実行できる多くのテストについては、「文字エンコードのトラブルシューティング」を参照してください。

最終更新日: 2015 年 12 月 2 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.