韓国語文字エンコーディングガイド:EUC-KR と CP949 の理解
韓国語(ハングル)のテキストを扱うには、韓国で使用されている特定のエンコーディング規格を明確に理解する必要があります。現代の Web やモバイルアプリケーションでは UTF-8 が世界標準となっていますが、多くのレガシーシステム、古い Windows アプリケーション、古いデータベースでは依然として EUC-KR やその拡張版である CP949 が使用されています。
本ガイドでは、韓国語の文字エンコーディングの技術的詳細、それらの相互関係、および現代の開発において変換を効果的に管理する方法について深く掘り下げます。
1. 主要な規格:EUC-KR と CP949
韓国のデジタルテキストは、主に密接に関連する2つのエンコーディング規格によって形成されてきました。
EUC-KR (完成型規格)
EUC-KR (Extended Unix Code for Korean) は、KS X 1001 規格に基づいています。これは「完成型」(Wansung) エンコーディングシステムであり、ハングルの各音節を個別の文字(Jamo)ではなく、1つの単位としてエンコードします。
- 長所: 最も一般的な2,350のハングル音節に対して非常に効率的です。
- 短所: 11,172存在するすべてのハングル音節を表現することはできず、珍しい文字や名前で問題が発生します。
- キーワード: EUC-KR エンコード デコード, EUC-KR UTF-8 変換。
CP949 (Windows 拡張)
CP949 (Code Page 949) は、Microsoft による EUC-KR の独自拡張です。古いバージョンの Windows (韓国語版) のデフォルトエンコーディングであり、レガシーな業務ソフトウェアでは依然として極めて一般的です。
- なぜ重要か: CP949 は EUC-KR との互換性を維持しつつ、11,172すべてのハングル音節をサポートすることで、EUC-KR の主な制限を解決しています。
- キーワード: CP949 エンコード デコード。
2. 技術比較表
| エンコーディング | 規格 | タイプ | 最適なユースケース | Unicode 互換? |
|---|---|---|---|---|
| EUC-KR | KS X 1001 | 完成型 | レガシーな Unix/Linux システム | いいえ |
| CP949 | MS Windows | 完成型 | レガシーな Windows アプリ | いいえ |
| UTF-8 | Unicode | ユニバーサル | すべての現代的な韓国語アプリ | はい |
3. 韓国語ソフトウェア開発のベストプラクティス
UTF-8 への移行
新しい韓国語プロジェクトにおいて、UTF-8 は唯一の論理的な選択肢です。すべてのハングル音節、古ハングル文字、およびグローバルな絵文字をネイティブにサポートしており、地域的なエンコーディングの制限がありません。
- 推奨: コードファイルや Web コンテンツには常に UTF-8 (BOM なし) を使用してください。
正規化 (NFC vs NFD)
韓国語テキストを扱う際、Unicode の正規化を正しく処理することが不可欠です。
- NFC (Canonical Composition): ハングル文字は結合済みの音節(例:'한')として保存されます。これは Web、Windows、Linux の標準です。
- NFD (Canonical Decomposition): ハングル文字は個別の字体(Jamo)(例:'ㅎ', 'ㅏ', 'ㄴ')に分解されます。これは主に macOS のファイルシステムで使用されます。
- なぜ重要か: システムが「正規化に対応」していない限り、NFC の "한" を検索しても NFD の "한" は見つかりません。
4. FAQ:よくある質問
Q: アプリケーションで韓国語の文字が「文字化け」するのはなぜですか?
A: これは通常、EUC-KR や CP949 のファイルを UTF-8 として読み込んだときに発生します。これを修正するには、正しい韓国語エンコーディングを使用してファイルを明示的にデコードし、UTF-8 に再エンコードする必要があります。
Q: EUC-KR と CP949 の違いは何ですか?
A: CP949 は EUC-KR のスーパーセットです。元の EUC-KR 規格で欠落していたすべてのハングル音節の組み合わせをサポートするために、8,000 以上の文字が追加されています。
Q: ファイルが EUC-KR か UTF-8 かを判別するにはどうすればよいですか?
A: バイトパターン検出ライブラリ(chardet など)を使用するか、UTF-8 のマルチバイトシーケンスの有無を手動で確認できます。UTF-8 ファイルには BOM (Byte Order Mark) が含まれていることがよくありますが、韓国語テキストでの使用は推奨されません。
5. Tool3M で韓国語テキスト処理をマスター
レガシーな韓国語エンコーディングが開発の妨げにならないようにしましょう。Tool3M は韓国語テキストを精密に扱うための専門ツールを提供しています:
- EUC-KR/CP949 エンコーダー & デコーダー: 文字化けを修復し、レガシーな韓国語ファイルを現代の標準に変換します。
- ハングル正規化ツール: クロスプラットフォームの互換性のために、ハングル NFC と NFD の間を変換します。
- 韓国語エンコーディング検出器: 韓国語テキストやファイルのエンコーディングを瞬時に識別します。