SQLite,文字コードを設定(変更)・確認する

スポンサーリンク

鍛錬 95

SQLite,文字コードを設定(変更)・確認する

文字コードを設定(変更)・確認するには、pragma encoding を使用します。
 
使用方法は、以下に示す通りです。

現在の文字コードを確認する

pragma encoding;

 
文字コードを設定する

pragma encoding = “変更する文字コード”;

設定可能な文字コード

以下は、設定可能な文字コードについてです。

  • UTF-8
  • UTF-16
  • UTF-16le (リトルエンディアンでエンコード)
  • UTF-16be (ビッグエンディアンでエンコード)
スポンサーリンク

実行結果(文字コードを変更する)

以下は、文字コードを次の順序で変更しています。

  1. 文字コードを確認
  2. 文字コードを、UTF-16leに変更
  3. 文字コードを確認
  4. 文字コードを、UTF-16beに変更
  5. 文字コードを確認
sqlite> 
sqlite> pragma encoding;
UTF-8
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-16le";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-16le
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-16be";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-16be

 
上記に示した通り、文字コードを変更することができました。

スポンサーリンク

文字コードを UTF-16 として設定した場合の挙動について

文字コードを UTF-16 として設定した場合は、使用しているPCのバイトオーダーでエンコードされます。

SQLite のサイトには、以下のように記述されています。

The string “UTF-16” is interpreted as “UTF-16 encoding using native machine byte-ordering”.

URL: (https://www.sqlite.org/pragma.html#pragma_encoding)
アクセス日時: 2018/04/27 23:29:28
 
以下に示す通り、私のPC環境において UTF-16 として文字コードを設定した場合、UTF-16le(リトルエンディアン)として設定されました。

以下は、次の順序で実行しています。

  1. 文字コードを確認
  2. 文字コードを、UTF-16 に変更
  3. 文字コードを確認
sqlite> 
sqlite> pragma encoding;
UTF-8
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-16";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-16le
スポンサーリンク

文字コードを設定する際の注意点

文字コードを設定する際は、データベースの作成前に行う必要があります。

SQLite のサイトには、以下のように記述されています。

It is not possible to change the text encoding of a database after it has been created and any attempt to do so will be silently ignored.

URL: (https://www.sqlite.org/pragma.html#pragma_encoding)
アクセス日時: 2018/04/27 23:57:19
 
試しに、データベースの作成前と作成後に文字コードを設定してみます。

以下は、次の順序で実行しています。

  1. (作成前) 文字コードを確認
  2. (作成前) 文字コードを、UTF-16leに変更
  3. (作成前) 文字コードを確認
  4. (作成前) 文字コードを、UTF-8に戻す
  5. (作成前) 文字コードを確認
  6. ----- テーブルを作成 -----
  7. (作成後) 文字コードを確認
  8. (作成後) 文字コードを、UTF-16leに変更
  9. (作成後) 文字コードを確認
sqlite> 
sqlite> pragma encoding;
UTF-8
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-16le";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-16le
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-8";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-8
sqlite> 
sqlite> 
sqlite> CREATE TABLE "test"(id integer, price varchar);
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-8
sqlite> 
sqlite> 
sqlite> pragma encoding = "UTF-16le";
sqlite> 
sqlite> 
sqlite> pragma encoding;
UTF-8

 
上記に示した通り、データベースの作成後は文字コードが変更されませんでした。

タイトルとURLをコピーしました