EBCDICのマルチバイト判定〜シフトアウトとシフトイン〜

マルチバイト文字を扱う文字コードでは、各バイトを文字単位できちんと区切って扱う必要があります。2バイト文字なのに1バイトずつ読んでしまうと、文字化けになってしまうからです。そこで、文字コード達は様々な方法で何バイト文字か判断しています。



では、表題のEBCDICについて。


EBCDICでは、シフトアウト(0E)とシフトイン(0F)という制御文字に挟まれたバイト列を2バイト文字として扱います。おわり。



■例
C5 C2 C3 C4 C9 C3(1バイト文字として扱う)0E(シフトアウトきた!)95CF 4040 8AB7(2バイト文字として扱う)0F(シフトインきた!)D9 E4 C2 E8(ふたたび1バイト文字)



■問題点

  • コード変換の際、バイト長が変わるor余計な空白が入るの選択を迫られる
  • SO/SIが存在しない場合、どちらで扱うかわかりづらい