2011.3.3
前へ
次へ
ホームページトップへ戻る

標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)

[第740回]


●Windows LiveメールにOutlook Expressのアドレス帳をインポートするにはコード変換が必要

前回Outlook Expressのアドレス帳をエクスポートして、それをWindows Liveメールのアドレス帳にインポートすると全角文字が文字化けしてしまいます、と書きました。
このことにつきましては、Microsoft Ansersにも質問と回答が掲載されています。

Outlook Expressの文字コードはANSIなのに対して、Windows LiveメールではUTF−8という文字コードを使っているために、こういうことがおきるのだとか。
むむむ。
理由はわかりましたけれども。
なんだか、おもしろくない気分でありますねえ。

ま。
それは置くとしまして。
なんなのでしょうか。
ANSIとかUTF−8とかと申すものは。

●ANSIとUTF−8

ちなみにコンピュータの世界では、なにやらこの文字コードがめちゃめちゃややこしいことになっております様子でありまして。
ただでさえややこしいところにもってきて、その呼称も複数あるようで、余計にややこしいものに思えてしまいます。

ANSIというのはアルファベットを7bitで表現したもので、ASCIIコードとも言うのだそうです。
おお。ASCIIか。
それなら、私のようにMSDOS以前からやっております者にとっては、はなからASCIIと言っていただいたほうが理解が早いのですけれど。

で。そのASCIIの未使用コードを利用して、2バイト16ビットに拡張して漢字を割り当てたものがSHIFT−JISなのだそうです。
日本語環境では、SHIFT−JISと言わずに、ただANSIと言った場合にも、SHIFT−JISを含む、と解されるようです。
日本のパソコン世界では以前からごく普通に使われてきたコード体系なのだそうです。
なるほど。
そこまでは、ごく普通に納得、です。
ANSIはわかりましたですよ。

そこで、問題のUTF−8でありますが。
英語やら日本語やらはそういうことでよかったのですけれど、パソコンが世界中に広く普及してきますと、今までのようなコード体系で、さまざまな言語の文字を表示させることに無理が生じてきましたと。
なるほど。

で。
そのさまざまな文字を16ビット、または32ビットのコードにあてはめてしまおう、というのがUnicodeなのだそうです。
単一(uni)のコードなのでUnicode、ということなのでしょう。
UTF−8(およびUTF−16)は、このUnicodeをファイルに格納したりするときの並べ方を規定したものなのだそうですねえ。
UTF−8を指して、Unicodeと称している文章などもあるようです。
最近のWindowsOSでは内部処理ではUnicodeを使っているのだそうです。

むむむ。
内部で何を使っていただいてもよろしいのですけれど。
それを表でいきなり使われましても…ねえ。

あ。ついでながら。覚えとしまして。
ですから、今まで一般にパソコンで使われてきましたANSIつまりASCIIつまりシフトJISは、JISコードとは違うということなのだそうで。
もとのJISコードを複雑にずらした(シフトした)ので「シフト」JISというのだそうです。

それから、Unix、Linuxでは一般にEUCというコードを使っているのだそうです。
おお。
LINUXではEUCというのをよく見ますね。
ASCIIコードの部分は共通なのですが漢字については、シフトJISとは別のコードなのだそうです。
つまり、全角文字については、WindowsとLinuxでは互換性に問題が生じるということですねえ。

ところでいままでパソコンではシフトJISが使われてきた、と書きましたが、それじゃあ本家のJISコードはパソコンでは使われていないのか、といいますとそうでもないようなのですねえ。
うう。
ややこしいなあ。

本家のJISコードはASCIIを無視して、ASCIIの英字コードをそのまま2バイトの文字コードとして使ってしまっているので、そのままでは、半角文字と全角文字を混在させると、半角アルファベット(および半角カナ)と全角文字とが区別できなくなってしまいます。
そこで、ベースは半角文字コードに置いて、全角を表現するときは、その文字コードが半角文字ではなくて全角文字であることを示すためにESCコード(0x18)を先頭に置いた数バイトのいわゆるエスケープシーケンスで囲んで示します。
このようにしてJISコード文字を示したものは、おもにメールなどで使われているのだそうであります。
もう。
たまらん。

●ANSIをUTF−8に変換する

ええと。
そんなわけで。
Outlook Expressのアドレス帳をCSVでエクスポートしたファイルはANSIコードであることがわかりました。
他方で、Windows LiveメールでCSVファイルをインポートするときは、コードがUTF−8でなければならない、ということのようです。

むむむ。
そこが一等気に入らんところでありますが。
しかし。
ここで文句を言ってみてもはじまりません。

そういうことならば、ここはなんとかしてANSIからUTF−8にコード変換をしなければなりません。
それには、Windows7上でメモ帳を使います。

メモ帳で、Outlook Expressからエクスポートしたアドレス帳(csvファイル)をひらきます。


こんなふうになっています。


これがOutlook Expressからエクスポートしたアドレス帳の中身です。

CSVファイルといいますと、EXCELのファイルだと思ってみえる方がいらっしゃるかと思いますが(かくいう私めも以前はそのように思っておりましたです)、れっきとしたテキストファイルです。
上に見えておりますように、項目の区切りに ,(カンマ)を使うことから、この名があります。
Comma Separated ValueのイニシャルをとってCSVファイルです。
カンマで区切っているだけで、ふつうのテキストですから、そのままメモ帳で開けます。

メモ帳で開いたものを、すぐにまたセーブします。

そのとき、文字コード(デフォルトではANSIになっている)をUTF−8に指定します。
ファイル名もそのことを明示する名前にしたほうがよいでしょう。
拡張子は.csvのままにします。
ここが一番肝心なところなのですが、「ファイルの種類」を「すべてのファイル」に変更することを忘れないように注意してください。
ここを忘れると、テキストファイル( .txt)にされてしまいます。
そして「保存」をクリックします。

●UTF−8にコード変換したCSVファイルをWindows Liveメールのアドレス帳にインポートする

前回と同じ要領で、Windows Liveメールを起動して、「アドレス帳」→「インポート」→「カンマ区切り(.CSV)」を選択し、「CSVのインポート」のウィンドウで、さきほどUTF−8にコード変換したCSVファイル(xpadrs−utf8.csv)を指定します。

おお。
文字化けしないでまともに表示されました。
そこで、前回と同様にして、割り当ての変更を行なってから「完了」をクリックします。



文字化けしないで、まともに表示されるようになりました。

しかし。

どうして私の名前がひっくり返ってしまうのか?

おそらく。
いろいろテストのために通常ではないことをしておりましたので、たまたま姓と名の間に「半角」のスペースを置いていたのです。
間に半角があったからといいましても、前後は「全角」文字ですから、全然英字名などではないのですけれどねえ。
表示名が「菱田 (半角スペース)照久」だったものですから、菱田がファーストネームで、照久がファミリーネームに違いないと。
で。
その場合、日本では、ファミリネーム、ファーストネームの順に表現するから、ここは「照久 菱田」になるべきだと。

むむむ。
どーしてそおいう余計なことをしてくれるのでしょうかねえ。
なにか、アニメに出てくる、出来の悪いロボットのようでありますね。
「どうして、こんな余計なことをするの?」
「キヲキカセテナオシテアゲマシタ。キニイリマセンカ?」

言っては悪いですけれど。
私としましては。
このメーラー(メールクライアント)は、とても使う気になれませんですねえ。
お客様のところに文字化けせずに無事届くかどうか心配になりますし。

ひょっとして…。
文章を勝手に校正して送ってくれたりして…。
お、お、お。じょーだんじゃあないよお。
そういうことは、やめてほしいなあ(いくらなんでも、それはないと思いますけれど)。
2011.3.3upload

前へ
次へ
ホームページトップへ戻る