忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【OSS-DB Silver対策】エンコーディングの仕組みと設定


OSS-DB Silver試験対策シリーズ、今回は「エンコーディング」についてです。文字をコンピュータが扱えるバイト列に変換する際のルールや、サーバとクライアントの関係性を正しく理解しましょう。

1. エンコーディングの重要ポイント

【 基本 】 エンコーディングは、文字データの格納や表示に直結する重要な設定です。以下のポイントを整理しておきましょう。

定義:文字をバイト列で表現する時のルールのこと。
2つの設定:DBに格納する際の「データベースエンコーディング」と、接続側が使う「クライアントエンコーディング」があります。
指定単位:ロケールと同様に、データベース単位で指定します。
互換性:データベースエンコーディングは、指定したロケールと互換性があるものを選ぶ必要があります。

2. 試験対策問題:4択チェック(複数選択)

【 問題 】 PostgreSQLのエンコーディングに関する記述として、適切なものをすべて選びなさい。

問題:エンコーディングの仕様に関する正しい説明の組み合わせを選びなさい。

A. データベースエンコーディングは、データベースごとに個別に指定することができる。

B. データベースエンコーディングとロケールの組み合わせに制限はなく、自由に選択できる。

C. クライアントとサーバで異なるエンコーディングを使用している場合、自動的に変換が行われる仕組みがある。

D. クライアントエンコーディングは、常にデータベースクラスタ全体で共通の設定を使わなければならない。


[ 選択肢 ]

  1. A と B
  2. A と C
  3. B と D
  4. C と D

3. 正解と解説

正解:2 (A と C)

【 解説 】
理解のコツ: データベースエンコーディングは CREATE DATABASE 時に指定可能です(Aは正解)。また、サーバとクライアントのエンコーディングが異なる場合、PostgreSQLがその間を適切に変換します(Cは正解)。
注意すべき点: データベースエンコーディングはロケールと互換性が必要です。例えば、ロケールを日本語(ja_JP.UTF-8)にしているのに、エンコーディングを全く無関係なものにすることはできません(Bは誤り)。クライアントエンコーディングは接続ごとに設定可能です(Dは誤り)。


4. まとめ

「DB単位で指定」「ロケールとの互換性」「サーバ・クライアント間の自動変換」。この3要素を抑えておけば、エンコーディングに関する問題はバッチリです。文字化けを防ぐ実務知識としても欠かせないポイントですね!

PR