UJP - UCS-2とUTF-8

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ ハウツー の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - UCS-2とUTF-8

UCS-2とUTF-8

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/2 22:39
 MacのExcel 2011で文字列カウントしていて気付いたのだけれど.VBAやワークシート関数で文字列長を調べるLenとLenBがある.LenBはByte単位.2バイト文字を1文字入れるとLenだと1だがLenBだと2となる.
 半角1文字を設定しても,戻り値が2になるので調べてみたら,WindowsNT/2000/XP、Office2000以降は,UNICODEでもUCS-2エンコードを採用しているとの事.
 このUCS-2だと,半角英数字1文字でも2バイト.なんだかむかし,JIS,EUC,SJISと混沌としていた時代,Unicodeになると文字コード問題を解決するための夢の規格がユニコードで,全ての文字が2バイトで表現される...と大雑把に教えてもらった事がある.それがUCS-2だったのか.

 ちなみに,今一般的になっているUTF-8だと思うけれど,それだと全角文字は3バイトで,半角英数は1文字.
 検証してみる.まずはLANG設定を確認.
MBA13:~ ujpadmin $ env|grep LANG
NLS_LANG=Japanese_Japan.AL32UTF8
LANG=ja_JP.UTF-8
MBA13:~ ujpadmin $
 バイト数をカウント.
MBA13:~ ujpadmin$ echo a > a.txt
MBA13:~ ujpadmin$ wc -c a.txt
2 a.txt
MBA13:~ ujpadmin$
 2バイト.これは改行コードが最後に入っているから.16進数でダンプしてみれば確認出来る.
MBA13:~ ujpadmin$ hexdump a.txt
0000000 61 0a
0000002
MBA13:~ ujpadmin$
 LF(LineFeed)の0aが入っている.次に日本語.
MBA13:~ ujpadmin$ echo あ > あ.txt
MBA13:~ ujpadmin$ wc -c あ.txt
4 あ.txt
MBA13:~ ujpadmin$
 4バイトなので改行コードの1文字を引いて3byteとわかる.

SJISの独自拡張のCP932とか,いろいろな事があったけれど,統一規格としてのユニコード.いまはメーカプラットホーム毎に絵文字を拡張しているから,結局整理すると個性を発揮できないというデメリットを解消するため?差別化するために独自に進むしか無いという所もあるなぁ.

トラックバック


広告スペース
Google