ISO-8859-3(Latin-3)とは?歴史・特徴・実務での扱いとUnicode移行ガイド
ISO-8859-3 とは — 概要
ISO-8859-3(通称 Latin-3、別名「South European」)は、ISO/IEC 8859シリーズの一つで、1988年に策定された8ビット単一バイトの文字エンコーディングです。下位128コード(0x00–0x7F)はASCIIと互換で、上位128コード(0x80–0xFF)のうち0xA0以降に西欧以外の一部言語で必要な拡張文字を割り当てています。主にマルタ語(Maltese)やエスペラント(Esperanto)など南欧・関連言語の表記を想定して設計されましたが、用途は限定的で、後にUnicode(UTF-8 など)へ移行が進みました。
歴史と設計目的
ISO-8859ファミリーは、1980年代に西欧および世界の主要言語をカバーするために分割して策定されました。ISO-8859-1(Latin-1)は西欧諸言語向け、ISO-8859-2は中東欧向け、ISO-8859-3は南欧向け/補助的ニーズを満たすための規格として位置づけられました。
ISO-8859-3 の当初の目的は、ASCIIで表せない特定のアルファベット文字(例えばマルタ語やエスペラントに必要な合字やダイアクリティカル付き文字)をサポートすることでした。しかし、トルコ語など一部の言語向けには ISO-8859-9(Latin-5)が別途策定されたため、ISO-8859-3 の適用範囲は相対的に狭まりました。
技術的な特徴
- バイト長:1バイト(8ビット)、単一バイトエンコーディング。
- ASCII互換:0x00–0x7F は ASCII と同一。
- 拡張領域:0xA0–0xFF の範囲に多言語用の追加文字を割当て。
- IANA 登録名(MIME での charset 名):"ISO-8859-3"(一般的な表記)。
- 一般的なエイリアス:latin3、iso-ir-109、l3、ISO_8859-3 などが用いられることがある。
- プラットフォーム上のコードページ:Windows では cp28593(しばしば "Windows-28593" と表記)、IBM では CCSID/Code page 番号が割り当てられている実装が存在します。
収録文字と対象言語
ISO-8859-3 は、エスペラントやマルタ語で使われる特殊文字(例えばダイアクリティカルの付いた文字)を収録することを重視しています。これら以外にも、南欧や地中海地域の一部言語に必要な記号や文字を含んでいます。ただし、すべての言語を網羅するものではなく、特にトルコ語のためのグリフ配置は ISO-8859-9(Latin-5)に譲られています。
重要な点として、ISO-8859-3 はあくまでラテン系アルファベットの拡張セットであり、キリル文字・ギリシャ文字・アラビア文字など非ラテン文字は含まれていません。
実用上の問題点と限界
- カバー範囲の狭さ:対象言語が限定的なため、同時に複数の異なる言語を扱う用途には不向き。
- 互換性の問題:Webやメールにおいては charset 指定が誤っていたり、省略された場合に文字化けを招く。
- Unicode への移行:Unicode がほとんどの文字を単一体系で扱えるため、新規開発ではほぼ常に UTF-8 が推奨され、ISO-8859-3 はレガシーとして扱われる。
Web・メールでの扱い(実務的注意)
かつては HTML やメールヘッダで charset=ISO-8859-3 が明示される例がありましたが、現在のウェブ標準では UTF-8 がデファクトスタンダードです。既存の古いコンテンツやローカル環境で ISO-8859-3 のデータを扱う場合は、次の点に注意してください。
- HTTP ヘッダや HTML meta タグ、メールヘッダ(Content-Type: text/plain; charset=ISO-8859-3)などで明確に指定する。
- ブラウザやメールクライアントによっては自動判定が誤り、文字化けが生じることがあるため、確実に charset を指定することが重要。
- WordPress に貼り付ける場合は、投稿エディタとサイトのエンコーディング(通常は UTF-8)が一致していることを確認する。ISO-8859-3 の生データをそのまま貼ると変換ミスで文字が壊れる可能性が高い。
Unicode へのマッピングと移行
ISO-8859-3 の各バイトは Unicode の特定のコードポイントに一対一でマッピングできます(0x00–0x7F は U+0000–U+007F、0xA0–0xFF は対応する U+00A0–U+00FF 等のうち適切な位置にマップ)。このため、iconv、Python、ICU、UniConv といった一般的な変換ライブラリで正確に UTF-8 へ変換できます。
移行手順の一例:
- まずファイルの実際のエンコーディングを確認(file コマンド、hexdump やバイナリ確認、あるいはエンコーディング検出ツール)。
- iconv や Python の codecs を用いて UTF-8 に変換(例:iconv -f ISO-8859-3 -t UTF-8 input.txt > output.txt)。
- 変換後の文字列を目視またはスクリプトでチェックし、誤変換や未割当の文字がないか確認。
実装やライブラリでのサポート
- 多くのプラットフォーム(Linux の glibc、libiconv、Windows の一部 API、Python の標準エンコーディング名 iso8859_3、Java の charset 名 ISO-8859-3 など)でサポートされています。
- ブラウザや最新の Web フレームワークはエンコーディングラベル規格(WHATWG Encoding Standard)を基にしており、「iso-8859-3」等のラベルに対応していますが、実務では UTF-8 を優先すべきです。
いつ使うべきか(実務判断)
新しいプロジェクトでは基本的に UTF-8 を選択してください。しかし、以下のようなケースでは ISO-8859-3 の扱いが必要になります。
- 古いデータベースやアーカイブ、レガシーシステムからデータを取り出して変換する場合。
- 特定の組織や文書で ISO-8859-3 が明示的に使用されている古いファイルをそのまま保管・参照する必要がある場合。
その際は、必ず変換前のバックアップを取り、変換後に文字化けがないかを確認してください。
まとめ
ISO-8859-3(Latin-3)は、1980年代に策定された8ビット単一バイトのラテン文字拡張セットで、マルタ語やエスペラントなど一部言語の表記をサポートするために作られました。現在では適用範囲が限られ、Unicode(UTF-8)への移行が一般的です。レガシーデータを扱う場合の互換性対応や変換作業が主な関心事になります。
参考文献
- ISO/IEC 8859-3 — Wikipedia
- IANA Character Sets — Root Registry
- Unicode Consortium — ISO-8859-3 to Unicode Mapping (8859-3.TXT)
- WHATWG Encoding Standard
- Python Documentation — Standard Encodings


