投稿者:畠中



こんにちは。
日本情報通信 バリューオペレーション本部 EDIサービス部の畠中です。

今回は、EDIデータを構成する要素「文字コード」の存在について紹介をいたします。


前回、EDIデータを構成する要素として、「伝送フォーマット」について紹介をしております。
もし興味がございましたら、ご参照ください。
NI+C EDIシリーズ<第6弾>これなくしてEDIは始まらない?!~EDIの要となる伝送のフォーマットに迫る~

目次:
1. はじめに
2. 文字コードの仕組みとは
3. ASCIIとは?
4. 実際に文字列をASCIIで表すと...
5. 文字化けが発生する原因と発生した場合の対処方法
6. おわりに


1. はじめに
「文字コード」という言葉は、普段生活している中で聞くことはほとんどないかもしれません。しかしながらEDIデータだけに限らず、私たちが使用しているパソコンやスマートフォン等でも使用されているものなのです。
例えば、Webサイトを閲覧している時やテキストデータを参照する際に、「文字化け」が発生して中身が全く読めないといった経験はないでしょうか。特に最近は少なくなった印象がありますが、一昔前はよくみられた印象があります。

文字化けのイメージ図
画像1.png
「文字化け」は一体なぜ発生するのでしょうか。実は発生する理由として「文字コード」の仕組みが関わっています。その理由も含めて、このブログでは「文字コード」の仕組みを解説していきたいと思います。


2. 文字コードの仕組みとは
「文字コード」とは、コンピュータが情報を処理するために文字1つ1つに割り当てている識別番号のことを指します。
例えるならば、「A」は1番、「B」は2番、「C」は3番のような形で番号をコンピュータ上で文字に対して割り当てて、その識別番号を組み合わせて文字列を形成しているようなイメージです。この場合、「ABC」をコンピュータ上で表現すると「123」となります。
画像2.png

つまり「文字コード」役割とは、人間が使用する文字をコンピュータで表現できる形へ変換する機能と言えます。
しかしながら、実際は上記の図よりも複雑になっています。「文字コード」の種類も一つだけではありません。
今回は、「文字コード」の中から「ASCII」についてご紹介いたします。


3. ASCIIとは?
ASCII(アスキー)とは、1963年に登場したAmerican Standards Association (ASA)(現:米国国家規格協会/ANSI)が規定した「文字コード」の一つです。主にホスト・コンピュータなどで使用されていており、英数字や感嘆符など一部の記号などを扱うことができます。
しかし、ASCIIは128文字しか扱えず多言語対応(特に日本語や中国語など)する上で課題を抱えていました。
その後、課題を解決するために、様々な「文字コード」が開発されます。今回はご紹介できませんが、「JIS」や「Shift-JIS」、「EUC-JP」などが日本語対応に向けて開発された「文字コード」となります。結果として、様々な「文字コード」が登場したことで、互換性が失われ「文字化け」が発生する原因となりました。


4. 実際に文字列をASCIIで表すと...
「EDI」という文字列を「ASCII」コードで表すと以下の図になります。
画像3.png
このように文字列「EDI」をASCIIコードに置き換えた場合、2進数と16進数の数字で表現することができます。しかし、なぜ2通りの表現方法があるのでしょうか。

・ 2進数の表現について
2進数で表現される理由は、コンピュータが「0」と「1」の2つの数字を用いて情報を処理しているためです。同様に「文字コード」も2進数で処理をされています。その2進数で表される数字(「0」と「1」)を「ビット」と呼びます。そのビットを8桁(1ビット×8)で区切ることで「1バイト文字」と呼びます。ASCIIは上の図のように「1バイト文字」であり、2進数だと8桁で表現されています。ただし、正確にはASCIIは7ビット文字のため、先頭に0を埋めて8ビットとして対応しています。

・ 16進数の表現について
16進数はあくまで、コンピュータではなく人が解釈しやすいように考えられた表現と言えます。2進数に比べて、「文字コード」の表現桁数を減らすことができ、可読性を上げることができます。例えば、エンジニア等がデータ解析をする場合に16進数に置き換えて解析をしています。余談となりますが、過去に2進数で解析を試みたことがあります。その結果、表示される桁数が多くなりすぎたため、解析に苦しみました。結果として、2進数を16進数で置き換えて表示する方が、読みやすくなり効率的に解析できると実体験を通じて感じました。
なお、16進数で「文字コード」を表現する場合、1バイトを4ビットごとに区切り、16進数に置き換えて2桁で表現をしています。


5. 文字化けが発生する原因と発生した場合の対処方法
最後に、冒頭で触れた「文字化け」について、その原因と解決方法をご紹介したいと思います。
「文字化け」の原因はファイルが指定した「文字コード」とそのファイルを読み込む(エンコードする)「文字コード」が異なることで発生します。
例えば、UTF-8で作成されたファイルをASCIIで読み込もうとするとすると、ASCII上で表現できない「文字コード」が指定されていることがあります。その結果、その箇所は空白になったり、本来とは違う記号に置き換えられたりすることで「文字化け」が発生するのです。
解決方法としては、エンコードの設定を確認してみてください。その際に正しい「文字コード」を選択すると、「文字化け」せず表示することができます。
※ただし、データが破損している場合は、エンコード設定を変更しても「文字化け」を直すことはできません。


6. おわりに
ここまで、「文字コード」の仕組みとASCIIを軸に「文字コード」がどのように表現されるかについてみてきました。
今回紹介した内容はほんの一部にすぎません。今後機会がありましたら、様々な「文字コード」の種類について紹介したいと思います。

EDIに関するご相談がございましたら、以下からお願いいたします。
それではまた次回EDIサービス部の記事をご期待ください。