{{category 仕様}} EUC-JIS-2004は、JIS X 0213の符号化方式のひとつであり、JIS X 0213とASCIIを同時に運用するものです。 JIS X 0213の附属書3で定義されています。EUC-JPからJIS X 0212補助漢字を除いたものに 対して上位互換となっています。EUC-JPの実装には補助漢字をサポートしていない ことがよくあるので、多くの場合は単にEUC-JPの上位互換とみなせます。 !!符号の構造 最上位ビットが0になっているバイト(つまり0x7F以下のバイト)は、常にASCIIの文字を 表します。 0xA1から0xFEまでの範囲は2バイトでJIS X 0213の漢字集合1面の文字を表します。 ただし、直前に0x8Fを付けると、2バイトで漢字集合2面の文字を表します。 漢字集合1面・2面どちらの文字も、JIS X 0213で定義されているコード(ビット組合せ) の各バイトに最上位ビット1を付けて表します。Shift_JIS-2004のように計算で変形したりは しません。 0x8Eの直後1バイトは、最上位ビットを1にした状態でJIS X 0201片仮名集合の文字を表します。 !!実装 プログラミング言語のPython, Ruby, PHP, コード変換プログラムのiconv, nkf, テキストエディタのGNU Emacs等はこの符号化方式に対応しています。 Emacs上の日本語入力プログラムSKKではJIS第3第4水準漢字辞書が整備されていますが、その辞書ファイルにはEUC-JIS-2004が使われています。 また、全国1万以上の医療施設で使われている日医標準レセプトソフトでは内部的にEUC-JIS-2004が使われているとのことです。 !!コード変換例 例えば、MacのコマンドラインやWindowsのCygwinでiconvを使ってUTF-8との間でコード変換するには下記のようにします。文字コード名「EUC-JISX0213」によってEUC-JIS-2004を指定できます。 iconv -f UTF-8 -t EUC-JISX0213 < utf8.txt > euc.txt これによってUTF-8のファイルutf8.txtをEUCにコード変換してファイルeuc.txtに書き出します。変換方向を逆にするには -f と -t の指定を入れ替えます。EUCとUTF-8の間で変換するには、常にこのやり方を用いるのが適当です。これはWindowsの実装にある波ダッシュ問題を引き起こさず、また丸付き数字やローマ数字を救済できます。EUCのコード変換には常にこれを用いるのがおすすめです。 !!名称について EUC-JIS-2004という名称になったのはJIS X 0213:2004においてです。規格初版のJIS X 0213:2000では、EUC-JISX0213という名称でした。 iconvでは、EUC-JISX0213の名前でこの符号化方式に対応しています。Ruby 2.0では "EUC-JP-2004" という名前で登録されています。Ruby 2.1.3では "EUC-JIS-2004" に 修正されたそうです(参考: [Ruby 2.1 で EUC-JIS-2004 の名前が修正|http://yanok.net/2014/09/ruby-21-euc-jis-2004.html])。 !!他の符号化方式との関係 この符号化方式は、規格本体で定義されている「国際基準版・漢字用8ビット符号」にJIS X 0201片仮名を追加したものです。この片仮名集合はEUC-JIS-2004では原則として使用しないことになっているので、その原則を適用すれば実質的に「国際基準版・漢字用8ビット符号」と同じになります。 !!参考 *[JIS X 0213の代表的な符号化方式|http://www.asahi-net.or.jp/~wq6k-yn/code/enc-x0213.html] *[JIS X 0213のコード対応表|http://x0213.org/codetable/] - Unicodeとの機械可読形式の変換表があります !!関連項目 *[[EUC-JP]] - JIS X 0208の対応する符号化方式 *[[JIS X 0213]] - 元になっている規格 *[[Shift_JIS-2004]] - 本符号化方式と同様のJIS X 0213の符号化方式の一種 *[[ISO-2022-JP-2004]] - 本符号化方式と同様のJIS X 0213の符号化方式の一種