いま改めて「文字コード」について(その2)

2021/05/27

前回は ASCIIコード、JISローマ字カナコード、旧JISコードについてお話しましたが、今回は シフトJISコード、EUCコード、Unicode® を中心にお話しさせていただきます。

【代表的な文字コード(その2)】

(4)EBCDIC

EBCDIC(Extended Binary Coded Decimal Interchange Code;エビスディック)は、1964年にIBMから発表されたIBMの企業標準で、BCD(Binary Code Decimal;2進化10進数)[※7] を拡張したコード体系に各種文字が定義されています。メインフレーム系のコンピュータでは標準的なコードになっていますが、他の ISO や ANSI、JIS 規格の文字コードとは互換性がありません。

(5)新JISコード(JIS X 0208)

JIS規格(日本産業規格)は、産業標準化法により制定または改正の日から5年以内に確認(見直し)を実施し、必要であれば改正または廃止することになっています。「JIS C 6226-1978」も制定から5年後の1983年、さらに、1990年、1997年および2012年に改正されています。[※8]  また、1987年に JIS に情報部門が新設されたことに伴い、規格名は「JIS X 0208」に改称されました。それぞれの改正は通称として「78JIS」「83JIS」「90JIS」「97JIS」(2012年の改正は追補の発行なので除く)と呼ばれますが、1983年の改正は1981年の当用漢字表の廃止と常用漢字表の告示に対応させたもので、一部の文字の区点コードの変更や文字の入れ換え、グリフ(字体)の変更など 78JIS と互換性のない大きな改正が行われました。そのため、83JIS 以降はそれ以前のコードと区別して「新JISコード」と呼ばれています。

83JIS における改正内容の概要

次に、83JIS から 90JIS への改正内容を下記に記します。83JIS への改正時と違い大きな改正ではないので、この 90JIS も「新JISコード」と呼ばれています。

83JIS から 90JIS への改正内容

97JIS では、文字については重複文字の削除だけで、字体の変更や区点コードの変更は行われませんでした。ただし、規格票は全面的に書き直され、「シフトJISコード」や「ISO-2022-JP」の取り込みや、空き領域を基本的に使用禁止にし、空き領域を利用するための条件が明確化される等の変更がありました。

(6)シフトJISコード

シフトJISコード(Shift_JIS、以下「S-JIS」)は、1982年に Microsoft、アスキー、三菱電機、Digital Research などにより策定された文字コードで、MS-DOS、Windows、CP/M などのOSや各PC(ハードウェア)メーカに採用されたことで、一時期、PC用として最も一般的な漢字コードとなりました。当初は一部の企業標準でしたが、「JIS X 0208:1997」の「附属書1(規定) シフト符号化表現」[※9] で JIS として規格化されました。
S-JIS が策定された当時は漢字コードの標準として「JIS C 6226/JIS X 0208(旧JISコード)」がありましたが、旧JISコードには半角カナ文字が定義されておらず、当時も広く使われていた「JIS X 0201(ANKコード)」との互換性がありませんでした。また、旧JISコードはエスケープシーケンスによって文字を入れ替えるため、その時の文字コードの種類を記憶しておかなくてはならず、当時のソフトウェアにとっては煩雑なものでした。この対策として、ANKコード と互換性を持ち、状態を持たずにそのコードだけ見れば文字が分かり、「JIS C 6226/JIS X 0208」の区点コード部分の文字(主に漢字)が表せる 1バイト(8ビット)または 2バイト(16ビット)の可変長文字コードとして S-JIS が作られました。
S-JIS では、ANKコード(JIS X 0201)の空き領域である 0x81~0x9f または 0xe0~0xef の 47文字が 1バイト目に出現した場合は 2バイトコードとみなし、2バイト目には 0x40~0x7e、0x80~0x9e または 0x9f~0xfc の 188文字が使われます。1バイト目がそれ以外の場合は 1バイトコードとして「JIS X 0201(ANKコード)」とみなされます。2バイトコードの場合は、47×188 文字の領域を 47×2×94=94×94 とみなして「JIS X 0208」の区点コード文字が割り当てられます。

コード表

例えば、旧JISコードでの例と同じ「12三井倉庫BP12」と表示したい場合は、次のようなコード列を送ることになります。

12三井倉庫BP12 コード表

(7)EUCコード(EUC-JP)

「EUCコード」[※10](Extended UNIX Code)は日本発で世界的な標準になった、主に UNIX系のOSで使われている、各国の各種の言語に対応するための文字コードです。日本語向けの「EUC-JP」(Extended UNIX Code Packed Format for Japanese)の他に EUC-TW(繁体字中国語・台湾)、EUC-CN(簡体字中国語・中国)、EUC-KR(韓国語)などがあります。
EUC-JP は、シフトJISコードと同じくエスケープシーケンス(漢字 Shift-in/Shift-out)を使わず(状態を持たず)に「JIS X 0208」の漢字を表現できるように作られたもので、ASCIIコード、JIS X 0208 の他、「JIS X 0201(ANKコード)」の半角カナ文字、「JIS補助漢字」[※11] が定義されています。「EUC-JP」といった場合、通常は「JIS X 0208」をベースに、「JIS補助漢字」として「JIS X 0212-1990」を用いたものを指しますが、「JIS X 0213」[※12] をベースにしたものを「EUC-JIS-2004」[※13] といって区別する場合があります。[※14]
他のほとんどのコードと同じく、EUC-JP でも ASCIIコード部分はそのまま定義されています。その他を含め、全体は下記のようになっています。

EUC-JP定義

EUC-JP定義

EUC-JP定義

EUC-JP定義

(8)Unicode® と ISO 10646

1980年代中頃、ISO では世界中の文字を一つの文字コードで扱える規格の検討が始められました。これとは別に、1980年代後半から 米 Xerox社 を中心にしたフォント関連企業でも、同様に世界中の文字を切替えなしで扱える文字コードである 「Unicode®(ユニコード)」 の検討が開始されました。1991年1月には、Unicode® に賛同するコンピュータ・メーカ、ソフトウェア・ベンダなどが参加して Unicode® の仕様策定、メンテナンス、調整を行う非営利団体「ユニコードコンソーシアム(The Unicode Consortium)」が発足し、米国カリフォルニア州の非営利法人(Non-Profit corporation)として「Unicode Inc.」が設立されました。当初は異なる考え方だった ISO の規格と Unicode® は、最終的にほぼ同じような規格(すべてが同じではない)である「ISO 10646」[※15] と「Unicode®」[※16] となり、現在は同期をとって更新・修正されています。 ここでは、Unicode® を中心に述べることにします。
Unicode® では、定義する文字すべてに名前と符合位置(code point)が付けられていいます。符合位置は 0x0~0x10ffff の 1,114,112個分(21ビット相当)があり、約75% はまだ使用されていません。符合位置の値は「U+****」または「U+******」(“*”は16進数)と書かれます。文字の名前と符合位置の例を下表に示します。

文字の名前と符合位置の例

表の漢字の名前にある「CJK UNIFIED IDEOGRAPH」は、ISO 10646 の原案作成時に中国語(Chinese)、日本語(Japanese)、朝鮮語(Korean) の漢字を統合するために中日韓の共同研究グループ(CJK-JRG : China, Japan, Korea Joint Research Group)が ISO 内に立ち上げられ、そこで策定された CJK統合漢字(CJK unified ideographs)の文字の一つであることを指します。つまり、各国で異なるグリフ(字形)を持つものの同じ漢字と考えられる文字の符合位置は同じ値が振られています。ただし、何れかの国の規格内で違うコードが振られている文字(例えば『国』と『國』、『圀』[※17])は、別の符合位置となっています。CJK-JRG は、その後、中国、台湾、香港、マカオ、日本、韓国、北朝鮮、シンガポール、ベトナム、英国、米国とユニコードコンソーシアムが参加した ISO/IEC JTC1/SC2/WG2 の下部組織 IRG(Ideographic Research Group)として、CJK統合漢字の追加、調整、統合の活動を行っています。

Unicode® では、全符合位置 1,114,112個を 65,536個単位に分け、「面(plane)」と呼んでいます。面は、第0面~第16面の17面あり、そのうち現在使われているのは下表の7面です。

第0面~第16面の17面

各面は、「ブロック()」と呼ばれる、一意の名前がけられた、同じ性質を持つ文字の連続した符合位置に分けられます。ブロックは、16個から65,536個までの16の倍数の長さを持ち、2019年7月10日に公開された「The Unicode® Standard Version 13.0 (Blocks-13.0.0.txt)」では 308個のブロックが定義されています。下表に、ブロックの例を掲げます。

第0面~第16面の17面

先頭のブロックである「Basic Latin(基本ラテン文字)」は ASCIIコード と同じものです。漢字は「JIS X 0208」「JIS 0212」「JIS X 0213」のすべてと異体字[※18] も定義されていますが、文字コードと符合位置に互換性はありません。

第0面~第16面の17面

「Unicode®/ISO 10646」では、符合位置がそのまま文字コードとして通信や保存されるわけではありません。これまでは厳密に区別してきていませんが、文字コードは「符号化文字集合 (coded character set)」と「文字符号化方式(CES:Caracter Encoding Scheme)」に分けて考える必要があります。ここまでの説明は符号化文字集合についてで、「Unicode®/ISO 10646」では複数の文字符号化方式が定義されています。「Unicode®/ISO 10646」における文字符号化方式については、次回(次項で)述べることにします。[※19]

[以下、(その3)に続く]

※72進数の「0000」~「1001」までを使い、次の「10(10進数)」では桁上がりさせて「1 0000」とする方式。2進数で、金額などの10進数計算を必要とされる場合に利用されていました。※8最新版は、『JIS X 0208:1997「7ビット及び8ビットの2バイト情報交換用符号化漢字集合[7-bit and 8-bit double byte coded KANJI sets for information interchange]」 発行:1997年2月28日、確認:2007年9月20日』および『JIS X 0208:1997/AMENDMENT 1:2012「7ビット及び8ビットの2バイト情報交換用符号化漢字集合(追補1) [7-bit and 8-bit double byte coded KANJI sets for information interchange (Amendment 1)]」 発行:2012年2月20日、確認:2016年10月20日』となっています。※9他に、シフトJISコード を拡張した企業標準として「Microsoftコードページ932」「MacJapanese」などがあります。
また、『Shift_JIS』は、インターネットのリソース管理を行っている ICANN(Internet Corporation for Assigned Names and Numbers)」による IANA登録名の「Character Sets」の一つとして登録されています。
※10「ASCIIコード」と同じく正しくは「EUC」ですが、本稿では「EUCコード」と書きます。※11「JIS 補助漢字」は、「JIS X 0208」に含まれない漢字の内「JIS X 0208」とともに使用する追加漢字の通称で、正式には「JIS X 0212-1990 情報交換用漢字符号−補助漢字」として規格化されています。(ただし、あまり普及していません)※12 の「JIS X 0213」を含めて「JIS 補助漢字」と呼ぶ場合もあります。※12最新版は「JIS X 0213:2000 7ビット及び8ビットの2バイト情報交換用符号化拡張漢字集合」および「JIS X 0213:2000/AMENDMENT 1:2004 7ビット及び8ビットの2バイト情報交換用符号化拡張漢字集合(追補1)」です。「JIS X 0208」を拡張するもので、第3水準漢字、第4水準漢字および非漢字の追加が規定されています。※13最初に標準化されたときは「EUC-JISX0213」という名称でしたが、「JIS X 0213:2000/ AMENDMENT 1:2004」が規格化された際に改正され、「EUC-JIS-2004」と改称されました。※14「EUC-JP」は JIS化されていませんでしたが、「JIS X 0213」の附属書で「附属書3(参考) EUC-JISX0213符号化表現」として参考規格化されました。※15最新版は『ISO/IEC 10646:2020 Information technology — Universal coded character set (UCS)』となっています。翻訳JISとして『JIS X 0221:2020 国際符号化文字集合(UCS) Information technology — Universal Coded Character Set (UCS)』が規格化されています。※16最新版は『Unicode® 13.0.0 2020 March 10』となっています。※17Unicode® では『囯』もコードが振られていますが、当用漢字ではなかったため、JIS では何れのコード表にも載っていません。※18Ideographic Variation Sequence という方式で、異体字セレクタ(字形選択肢:IVS:Ideographic Variation Selector) を用いて多くの異体字を使用することができるようになっています。(詳細は ※16 を参照ください)※19説明は省略しますが、他に結合文字、字母組み合わせ、絵文字の結合、絵文字の色(肌の色)の変更、国旗の指定なども考慮する必要があります。

この記事は2021年5月27日時点の記事です。

書類・文書の保管サービス‐スマート書庫

保管倉庫は、三井倉庫ビジネスパートナーズ(MBP)が選定した24時間365日セキュリティ完備の書類保管専用倉庫です。重要書類、機密文書を安全に保管するための漏洩管理も万全。本格的な書類保管専用倉庫をご利用いただけます。

関連記事

三井倉庫のスマート書庫 すましょ

本サイト「すましょの鍵」における情報提供は三井倉庫ビジネスパートナーズによって提供されています。

もう今までの書類や文書の整理とはおさらば。ビジネスを加速させる専効率的な書類管理などオフィスにおける書類や文書の保管方法など、あらゆる観点で記事を更新しております。三井倉庫ビジネスパートナーズでは「スマート書庫」というサービスをご提供しており、1箱からでも預入れができる文書保管サービスとなっております。事業規模にかかわらず気軽にご利用いただけます。個人事業主の方もOKです。保管料は1箱あたり100円。初回預入費用は1,000円。シンプルな料金体系で、大変ご好評をいただいています。あるべき文書管理体制の構築に向けて、お客様のご事情に合わせた適切な文書管理形態ならびに文書管理プロセスをご提案いたします。

2020 MITSUI-SOKO BUSINESS PARTNERS CO.,LTD.ALL Rights Reserved.