Word -  置換のワザ > 文字種の変換とフォントの罠(2)

Wordの[挿入]メニューから[記号と特殊文字]を選び、[コード体系]に「ASCII (10進)を」選ぶと、文字種の変換とフォントの罠(1)で書いた1バイトで表現可能な256の領域に相当する文字だけが一覧表示されます。

これらの文字には、10進数で33〜255が割り当てられています。0〜32まではタブや改行、スペースなど文字以外の諸々に使われているため、文字の割り当てはありません。

Wordの[書式][文字種の変更]で全角半角間に1:1の対応ができているのは、10進数で文字コード33〜126の範囲内にある文字(古いバージョンのWordで「半角1」として区分されていた文字)です。

この範囲についてはマクロなどを使わずに[文字種の変換]で全角←→半角変換をしてもコードそのものが正しく変換されます。

一方、161〜255の文字(古いバージョンのWordで「半角2」として区分されていた文字)はどうかというと、文字コードとしては規格で定められたASCII半角文字の領域に相当します。

ところが、日本語版Wordに限って言えば、[記号と特殊文字]のテーブルから挿入される文字の中に規格の半角文字ではなく日本語の全角文字が混じっています。

これはおそらく次のような理由によるものと思われます。
161〜255の文字のなかには、ASCII規格の英文半角文字コードをそのまま使うと日本語の半角カナと衝突するものがあります。

半角英数字と半角カナのどちらも表示できる環境で、ひとつの文字コードに2種類の異なる文字が割り当てられているのはコンピュータにとっては非常に困ります。文字コードを見てもどちらの文字を表示すればよいのか判断できないからです。

このため、英語版のWordを日本語版にローカライズするときに、半角カナと衝突する文字については該当する全角文字のコードで代用して衝突を回避したのではないかという気がします。

裏付けを取ったわけではないので推測にすぎませんが、これ以外に有意な理由は思い当たりません。実際、Word 97/98を使って[記号と特殊文字]で文字を選んでいくと、全角で挿入される文字だけ10進ではなく現在のUnicodeに相当するコードが作業画面左下に表示されます。

これでは混乱のもとだと思ったのか、Word 2000では全角で挿入される文字に対して日本語S-JISコードにUnicodeが並記されるようになり、Word 2002以降はコード体系ごとに区別して[記号と特殊文字]でコードが表示されるように変化しています。

さて、日本語版Wordで[記号と特殊文字]のテーブルから全角文字のコードが挿入されるのは、下記の表にピンク色で示した文字です。

この中には[記号と特殊文字]で英文フォントを選択して挿入すると見た目が半角になるものがありますが、これはあくまでも見た目の問題であって本来の半角文字ではありません。フォントを変えれば元に戻ってしまいます。

ピンク色以外の文字は、英文フォントだけでなく日本語でもMicrosoft系のフォントなら表示はASCII規格の文字になります。

これは日本語Word独自(なのかMicrosoft独自なのかは微妙なところ)の仕様で、これらの半角文字をWordでコピーしてUnicode未対応の他のアプリケーションにペーストすると、違う文字に置き換わってしまうことがよくあります。

また、メモ帳などがそうなのですが、ペーストした時点では違う文字になっていなくても、データを保存してファイルを開き直すと文字が変わっていることもあります。

こうしたケースで、これらの文字がどのように置き換わるかを一覧で示します。もともと全角の文字については当然ながら同じ全角文字が入ります。

コード172の文字はUnicode対応アプリケーションにはペーストでき、Unicode未対応のエディタなどにペーストしようとすると消えてしまいます。

純粋な英語環境であればこのようなことは起こり得ないのではないかと思いますが、日本語環境で使用する[記号と特殊文字]にはいろいろと注意が必要ですね。

 

 
  用語

16進数
0〜9とA〜Fの16文字を使って表した数。10進数でいうと、Aが10、Bが11といった具合で、16になると一桁上がります。
 
→2進数−8進数−10進数−16進数の換算
Windowsの[スタート]メニューから[すべてのプログラム][アクセサリ][電卓]と選ぶと電卓が表示されます。
 
この電卓の[表示]メニュー(Windows NTの場合は[電卓の種類])で「関数電卓」を選び、ラジオボタンで10進を選んだ状態で、たとえば65を入力ます。
 
そして、16進のラジオボタンをクリックすると16進での値である41に変わります。
 
この41に0xを付けた0x41が、16進数でのコード表記です。Wordで16進コードが表示される場合は、上記と逆の方法で10進コードを計算することができます。
  
  Learn more...
Wikipedia
十六進記数法

 
IT用語辞典 e-Words
【hexadecimal number】

 
  記号と特殊文字
[記号と特殊文字]のテーブルで文字を選択したときに、Wordの作業画面左下に数字が表示されることがあります。
 
この数字が、選択した文字の文字コードです(Word 2002以降は[記号と特殊文字]でコード体系を選んで文字を選択すると一覧表の下にコードが表示されます)。
 
たとえばAを選択すると、表示される65がAの文字コードに相当します。
 
コードの頭が0xで始まっている場合は16進数表記、単なる数字だけの場合は10進数表記です。
 
 



 
 

Prev << Back >> Next