ISO-8859-3とは?概要・歴史・仕様・現状と実務対応を徹底解説

ISO-8859-3とは — 概要と歴史

ISO-8859-3(通称 Latin-3、または「South European」系の文字集合)は、ISO/IEC 8859 標準シリーズの一つで、8ビット(1バイト)単位の単純な文字エンコーディングです。1980年代後半に制定され、主にマルタ語やエスペラントなど南ヨーロッパ系の言語やいくつかの特定用途の文字を扱うために設計されました。ISO-8859 系列は複数の地域言語ニーズに応えるために分割されており、ISO-8859-1(Latin-1)が西欧言語向け、ISO-8859-2 が中欧向け、ISO-8859-3 が南欧向けという位置づけになっています。

仕様のポイント

  • 符号化方式:単方向の8ビット固定長エンコーディング(ASCIIの0x00–0x7Fをそのまま利用)。
  • 可視文字領域:0xA0–0xFF に各国語特有の拡張文字を割り当て。
  • IANA 登録名:ISO-8859-3(MIME charset として利用可能)。
  • Windows のコードページ:CP28593(Windows-28593)として知られている。
  • 策定年・規格番号:ISO/IEC 8859-3 として ISO により公開(ISO 標準の一部)。

どの言語に対応しているか

ISO-8859-3 は主に以下のような言語や文字を念頭に作られました。

  • マルタ語(Maltese) — 例えば「Ħ/ħ(H に棒)」など固有文字を含む。
  • エスペラント(Esperanto) — 一部の拡張字をカバーするが、エスペラント全体を完全に最適化したものではない。
  • その他:南欧のいくつかの言語や記号を部分的にサポート。

なお、トルコ語については当初に議論があったものの、最終的には ISO-8859-9(Latin-5)がトルコ語向けに採用され、現実的にはトルコ語用途には ISO-8859-9 が使われます。

文字集合の特徴(技術的な差分)

ISO-8859-3 は ASCII(0x00–0x7F)を保持した上で、0xA0 から 0xFF に印字可能な拡張文字を定義しています。ISO-8859-1(Latin-1)など他の Latin 系と異なる点は、特定の拡張文字(例えばマルタ語やエスペラントに必要な文字)を追加し、それに伴って他の Latin 系で定義されている一部文字を割り当て直している点です。

Unicode(UTF-8/UTF-16)登場以前は、このような地域別の 8 ビットエンコーディングが主流でした。しかし、各 ISO-8859 系列は互いに互換性が限定的で、異なる系列間での文字表現が一致しないため、文字化け(mojibake)を引き起こしやすいという欠点がありました。

現状と用途(なぜあまり使われないか)

  • 採用率の低さ:ISO-8859-3 は対象言語が限られるため、普及が進まず利用者が少ないままになりました。
  • Unicode の台頭:UTF-8 をはじめとする Unicode の普及により、単一の文字セットでほぼすべての言語を扱えるようになり、地域別 8 ビットコードの必要性は大幅に低下しました。
  • 互換性の問題:異なる ISO-8859 系を混在させた運用や、既存データの変換問題があり、長期的な保守性が低い。

結果として、現代の Web や多言語アプリケーションでは UTF-8(または UTF-16)が事実上の標準になっており、ISO-8859-3 を直接指定して利用するケースは非常に稀です。

Web・メールでの指定と IANA 登録

MIME ヘッダや HTML の charset 指定では "ISO-8859-3" が IANA に登録された名称として使えます(例:Content-Type: text/html; charset=ISO-8859-3)。ただし、今日の Web ページではほとんどが UTF-8 を使用しているため、ISO-8859-3 を明示的に指定するページはほとんど見かけません。HTML のメタタグで指定する例:

<meta charset="ISO-8859-3">

WordPress で扱うときの注意点と実務的な対応方法

多くの WordPress インストールはデータベースやファイル処理を UTF-8(現行は utf8mb4)前提で動作しています。古い ISO-8859-3 の文書やデータを WordPress に取り込む場合は、事前に UTF-8 に変換するのが推奨されます。具体的な手順例:

  • ファイル単位の変換(ローカル):iconv を使う。

    例:iconv -f ISO-8859-3 -t UTF-8 oldfile.txt > newfile.txt

  • プログラム内で変換:PHP の場合は mb_convert_encoding を利用。

    例:$utf8 = mb_convert_encoding($isoText, 'UTF-8', 'ISO-8859-3');

  • データベース移行:MySQL に直接インポートする場合、文字セットを指定してインポートするか、インポート前にファイルを UTF-8 に変換する。既存テーブルを UTF-8 に変更する際はバックアップを取得し、ALTER TABLE … CONVERT TO CHARACTER SET utf8mb4 … を慎重に実行する。
  • WordPress 設定:wp-config.php の DB_CHARSET を utf8mb4 に設定し、HTML ヘッダは UTF-8 を出力する(多くのテーマ・コアがこれを前提とする)。

変換時に発生しがちな問題(トラブルシューティング)

  • 文字化け(mojibake):正しい元のエンコーディングを指定せず変換すると、文字化けや不正な置換文字(�)が生じることがある。ファイルのエンコーディング検出には file -i、enca、uchardet、chardet 等のツールが役立つが、検出は確実ではないので注意が必要。
  • 半角/全角・結合文字の差:エンコーディング間で異なる表現(結合文字 vs 合成済文字)がある場合、見た目は同じでもバイト列が異なることがあり、検索や比較で問題になる。
  • DB のバイナリ比較:エンコードを変えるとバイト列が変わるため、既存のハッシュや比較ロジック(パスワードストレージ以外)に影響が出る恐れがある。移行前に整合性チェックを行う。

実務的な推奨(まとめ)

  • 新規システムでは ISO-8859-3 を使わない:UTF-8(utf8mb4)へ統一する。
  • 既存データを扱う場合は、まずエンコーディングを正確に特定し、信頼できるツールで UTF-8 に変換してから WordPress にインポートする。
  • バックアップを必ず取る:ファイルもデータベースも、変換前の状態を保存した上で作業する。
  • 変換後の検証:目視での確認、検索・置換テスト、文字カウント(バイト数と文字数)などで問題がないか検証する。

参考(参考になるリソース)

以下は ISO-8859-3 の仕様やマッピング、関連情報を確認できる主要な公式・信頼できる情報源です。

参考文献