|
2.8.7 発展:文字コード

文字と文字コードの変換法
文字列を構成するテキスト文字や記号には,Mathematica内部で固有の文字コードが割り当てられる.内部ではこの文字コードをもとに文字列の操作処理が行われる.
文字列を構成する文字成分のそれぞれの文字コードを列挙させる.
In[1]:= ToCharacterCode["ABCD abcd"]
Out[1]= 
出力された文字コードからもとの文字列を再構成する.
In[2]:= FromCharacterCode[%]
Out[2]= 
特殊文字や記号にも固有の文字コードが割り当てられている.いくつかの例を見てみる.
In[3]:= ToCharacterCode["    "]
Out[3]= 

連番文字の生成
英語の小文字アルファベットのa〜kの連番部分を列挙させる.
In[4]:= CharacterRange["a", "k"]
Out[4]= 
ギリシャ語のアルファベットを列挙させる.
In[5]:= CharacterRange[" ", " "]
Out[5]= 
特殊文字や記号の多くは \[Alpha]の形の英語読みの名前が割り当てられているので,英語名を使っていつでも参照できる.文字コードをわざわざ使う必要はない.
文字コードの直接参照で,特殊文字と記号を使い文字列を作る.
In[6]:= FromCharacterCode[{8706, 8709, 8711, 8712}]
Out[6]= 
使った特殊文字に対応する英語名を確認してみる.上の例の文字コードの代りに,これらの英語名を入力に使ってもよい.
In[7]:= InputForm[%]
Out[7]//InputForm= "   "
Mathematicaでは,数学で使う標準的な特殊文字や記号とヨーロッパの標準的な言語の文字セットにも登録済みの英語名が用意されている.日本語文字セットも支援されているが,3,000以上の文字があるため英語名は割り当てられていない.このため,漢字等の参照には文字コードを使う必要がある.
漢字を使った文字列の入力例.
In[8]:= "数学"
Out[8]= 数学
入力形で漢字を入力するにはMathematicaの標準文字コードを使う.16進数で記述することに注意.
In[9]:= InputForm[%]
Out[9]//InputForm= "数学"
ノートブック用フロントエンドにおいて特定のフォントで文字を入力した場合,文字コードが自動的に使われるようになっている.
しかし,用途によっては,直接文字コードを入力した方が便利なときがある.

文字コード参照による文字指定
文字コードが256より小さい1 バイトのものであれば \nnnか \.nnの文字指定の書式が使える.それ以上の値を持つ2バイトの文字コードは書式 \:nnnnを使わなければいけない.いずれの書式を使うにしても,指定桁数のすべてを入力する必要があり,文字コードの値が小さすぎて上位の桁が空になってしまうときは0を補っておく.
文字列にある文字と記号を16進法の文字コードに変換する.
In[10]:= BaseForm[ToCharacterCode["Aà "], 16]
Out[10]//BaseForm= 
文字コードを文字列に変換する. の文字コードにおいて最上位桁の0に注目.
In[11]:= "\.41\.e0\:03b1\:2135"
Out[11]= 
Mathematicaの使う文字コードの割当ては,3つのともに互換な標準文字コードの規格に準拠している.その規格とはASCIIとISO Latin-1,そして,Unicode規格である.ASCII規格は英語キーボードの文字と記号の文字コード範囲を定義し,また,ISO Latin-1規格はヨーロッパの言語で使う特殊文字の範囲を定義する.Unicode規格は前者の規格をさらに一般化し,欧州以外の漢字等の文字セットも定義している.

Mathematicaの提供する代表的な文字セットと文字コードの対応表
印字可能なASCII文字のすべてを表示する.
In[12]:= FromCharacterCode[Range[32, 126]]
Out[12]= 
ISO Latin-1規格の文字セットを表示する.
In[13]:= FromCharacterCode[Range[192, 255]]
Out[13]= 
ISO Latin-1規格の文字セットを表示する.
In[14]:= FromCharacterCode[Range[192, 255]]
Out[14]= 
漢字を拾ってみよう.
In[15]:= FromCharacterCode[Range[30000, 30030]]
Out[15]=

|