どうやら、コンピュータは「1」と「0」の信号で動いている、ということは解った。
では、実際にはどのように信号のやり取りをしているのか?
まずは、「色の情報」をどのようにして扱っているかを整理する。
実際には、様々な方法があるのだけれど、
話を簡単にするために、「RGB」による指定方法を例に解説する。
おそらく、「色の三原色」という言葉を聞いたことの無い人は居まい。
そうそう。「赤(Red)」と「緑(Green)」と「青(Blue)」の三色で、
あらゆる色を表現できるという「アレ」。聞いたことくらいはあるだろう。
コンピュータの中でも、この三原色を使って色を表現する。
一般的には、赤・緑・青の色の強さを、それぞれ、「0〜255」の256段階で指定し、
この3つの色を合成して、色を表現する。
うん?なぜ、256段階なのか?実は、これが重要なポイント。
実は、この値こそが、「1」と「0」の世界を象徴しているのである。
とりあえず、下の表を見てみる。これは、赤・緑・青の値が取り得る範囲を示している。
まずは、2進数の場合:
例えば、赤色を表示したい場合には、「1111 1111 0000 0000 0000 0000」となる。
例えば、灰色を表示したい場合には、「1001 1001 1001 0001 1001 0001」となる。
次に、16進数の場合:
例えば、赤色を表示したい場合には、「FF 00 00」となる。
例えば、灰色を表示したい場合には、「99 99 99」となる。
ちなみに、10進数の場合
例えば、赤色を表示したい場合には、「RGB(255, 0, 0)」となる。
例えば、灰色を表示したい場合には、「RGB(153, 153, 153)」となる。
はて?2進数...16進数...10進数...何のことやら?
我々は、「10」を一つの単位をし、9まで数えたら桁を繰り上げる数を使うことが多い。
これを一般的に「10進数」と呼ぶ。これも聞いたことくらいはあるハズ。
ちなみに、時計は60を単位としているので、60進数と呼ぶ。これは、常識。
数学の世界では、数を数える方法には、いくつかの方法が存在している。
2進数というのは、つまりは、0と1で表す方法。
1を単位とし、1まで数えたら次に「10」となるような数え方。
一般的に、この2進数の1桁分をビット(bit)と呼ぶ。
上の例だと、赤・緑・青がそれぞれ8bitで表されていて、
それらを組み合わせた色は、24bitで表現できる。
「24bitでそんなに多くの色を表現できるハズが無い!」と言う人がいるかもしれないが、
実際に、どの程度の色が表現できるのかというと、
なんと、「2の24乗」で「16,777,216 色」もの組み合わせが出来るのである。
さて、上の表では、16進数というのも併記してある。これは何か?
16進数というのは、9まで数えると、A⇒B⇒C⇒D⇒E⇒Fと上がっていき、
「15」まで変えぜたら次に位が一つ上がって「10」になるような数値である。
10進数と区別できないので、「0x10」のように前に「0x」を付けるのが慣例。
実を言うと、コンピュータの世界では「2進数の代わり」に、
16進数を用いることが多い。2進数だと、桁を数えるのが大変であるし、
10進数だと2進数に変換するのが面倒。だから、16進数で表す。
うん?なぜ、16進数だと変換が楽なのか?
とりあえず、下の図を見てみる。
実は、2進数と16進数には「面白い関係」があって、
2進数を「4桁」ずつに区切って「16進数」に置き換えることができるので、
0000〜1111までに対応する16進数さえ覚えておけば、それ以上を覚える必要はない。
最近では、すっかり、2進数や16進数でデータを扱うことは少なくなったが、
現在でもエラーメッセージなどでは、16進数がコッソリと表示されているし、
マイコン開発などでは、今でも2進数や16進数でプログラムを書くことがある。
まぁ、マニアックな話なので、この話はいずれ...。
さて、話を元に戻して...。
コンピュータでは、多くの機器がこの方法で色を表現していて、
ディスプレイの表示も、結果的には、2進数の信号として扱われているのである。
なるほど。とりあえず、色のことは解った。
では文字はどのように表すのか?
意欲的な人は、そんな疑問を持つことであろう。
ということで、ここからが「本題」。
実は、文字の場合も同じ。結果的には2進数で表すことができる。
ただし、文字の場合は、2進数に変換可能な対応表のようなものを用意し、
この対応表を参照することで、文字を表示する。これが重要!
実際には、その対応表を参照する方法は様々で、
本格的なシステムを構築するためには、かなり詳しいことを知っておく必要があるのだが、
今回は、基本的な話だけ。
さてさて、コンピュータの世界では、「文字化け」という現象が生じるが、
実は、この原因は、要するに文字の対応表にある。
以下の話を知っておけば、回避できることも増えるハズ。
とりあえず、最も基本的な対応表を見てみる。
これは、「American Standard Code for Information Interchange」の略で、
「ASCII(アスキー)」と呼ばれている文字コード。歴史は長いが、「超」基本。
この文字コード表は、1960年代に標準化され、現在でも広く使われている。
アルファベットを含む128文字が定義されていて、その内、33文字は「制御文字」。
制御文字は、モニタやプリンタの制御に使うもので、今回は詳しい説明はしない。
さて、試しに、「Hello」というのをこの文字コード表を使って表現してみる。
16進数:0x48 0x65 0x6C 0x6C 0x6F
2進数 :0100 1000 0110 0101 0110 1100 0110 1100 0110 1111
このように、コンピュータが扱える2進数に変換されている。中々、面白い。
ここで、注意しないといけないのが、大文字と小文字の区別が存在していること。
つまり、「Hello」と「hello」と「HELLO」は、それぞれ「全く異なる」信号となる。
紙の世界に慣れていると、この辺りの認識がちゃんとできないのであるが、
コンピュータの世界においては極めて重要な問題なのである。
さて、ここには、アルファベットしか存在していない。日本語は?
実は、日本語はASCIIコードには含まれていないのである。
日本語を扱うための文字コード表は「別」に存在している。
最も有名な文字コード表が「Shift_JISコード」と呼ばれる文字コード。以下は、その一部。
実は、Shift_JISでは、最初の部分がASCIIコードと同じで、
後ろの部分に、日本語特有の文字を加えている。
まず、注意してもらいたいのが、「JIS漢字」と呼ばれる部分に定義されている文字。
この部分には、全角の数字とアルファベットが含まれる。実は、「漢字扱い」なのである。
「半角」と「全角」の英数は似て非なるもの。全角英数は、日本が独自。
次に、「文字化け」の原因となる部分。無意識に使っていないだろうか?
この部分は、機種依存文字と呼ばれる文字が定義されている部分。
正式に標準化されているのではなく、メーカーが勝手に定義している部分。
以前は「機種依存文字」と呼ばれていたもので、
現在では、「環境依存文字」と呼ばれているもの。
文系理系を問わず、常識として知っておいた方が良い。
見た目に惑わされて、この部分の文字を好んで使う人は非常に多いが、
日本製のソフトウェア以外は、対応していないことが多い。
データベースを構築したり、ホームページを作るときにもエラーの原因となる。
ましてや、この部分の文字を組み合わせた「ⅩⅩ」などは、言語道断!
「文字化け」が発生した場合に、元に戻せない。
この問題の「おかげ」で、私は、一体どれほどの無駄な時間を費やしたことか...。
注意しても、誰も聞いてくれない...文書化までしたのに...。そんな人とは仕事をしない...。
ましてや、ボランティアで対応できるような問題じゃない!
っと、まぁ、開発者に、そういったことを言わせないための知識と対策は必要かと。
さて、Shift_JIS の場合、「0x8540~ 0x889e」は、環境依存文字であり、
「0xeb40~ 0xeffc」は、Mac と Windows との互換が無い部分。
そして「0xf040〜」は「外字」を定義する部分なので使ってはいけない。
そういえば、考古学や文献学の人は、存在しない漢字を勝手に作ってしまう傾向にあるが、
そのような行為は、データを交換する上で大きな問題となってしまい、
システム技術者に非常に大きな負担をかけることになる。モラルとして...ね。
さて、日本語を扱える文字コード表は、Shift_JIS コードだけかというと、そうでは無い。
Linux や Mac では、UTF-8 と呼ばれる文字コードを使っている。
これは、Unicode(ユニコード)と呼ばれる文字の一覧を参照する方式。
UTF-8 は、Shift_JIS と異なり、最初から国際化を前提としていて、
様々な国の文字を扱うことができる。アラビア語やギリシア文字、キリル文字なども。
実は、「文字化け」の問題を最小限に抑えるには、UTF-8 の方が無難。
ところで、文字コードが間違って指定されたら何が起きるか?
Windows で作成したテキストが、Mac と Linux で「文字化け」。よくある話。
以下は、簡単な例。
この例は、Windows の「メモ帳」でテキストファイルを作成し、保存したものを、
Mac で開いた例。日本語のメッセージが完全に文字化けしている。
Windows ではShift JIS を使い、Mac ではUTF-8 を使っているのが原因。
あれ?と思った人もいるかもしれない。半角英数の部分は文字化けしていない。
実は、Shift_JIS も UTF-8 も半角英数の部分に関しては、ASCII コードと互換があるので、
ASCII コードで定義された文字に関しては、文字化けが起きないのである。
「フォルダやファイル名は、半角英数で書くのが基本中の基本」と言われるが、
実は、この問題を回避するため。日本語のファイル名は避けた方が良いのである。
とはいえ、ASCIIコードで定義されている領域であっても、記号類は避けた方が良い。
記号類には、システム上で特殊な役割を担っている場合があるため。
安全なのは「_(アンダースコア)」だけ。コレ以外は、使わないのがマナー。
さて、Windows のメモ帳の場合であれば、実は、ファイルを保存するときに、
文字コードの指定というのができる。意外に知らない人が多いのだが。
とりあえず、以下のようにしておけば、Mac と Linux を使っている人には有難い。
もちろん、ここで挙げた問題は、ホームページでも起こり得る話。
実は、自治体のホームページに有りがち...。部署ごとにページを作っているのか、
ページによって、文字コードの指定が異なっていることもある。
こっちに合わすと、あっちで文字化け。あっちに合わすとこっちで文字化け...。
ふむふむ。不安な人は、Linux や Mac でホームページにアクセスして確認を。
そうそう。そういったページは、iPad から見ても文字化けするのであった。どうだろう?
もちろん、Excel などでも、文字コードの気遣いが必要で、
特に、CSV形式などのテキスト形式で保存する時には、指定するべきである。
とは言うものの、私は、Excel での対処方法を知らない。そもそも、できるのか?
さて、本日のまとめ。
コンピュータは「1」と「0」で情報を扱う。
文字の場合は、文字コード表を参照し、そのコードを「1」と「0」に変換する。
文字コードを間違えて指定すると文字化けする。
指定を間違える可能性は、大きく分けて二つ。
一つ目は、環境依存文字など、正式では無い文字コードを使った場合。
二つ目は、そもそも、異なる文字コード表を用いた場合(Shift-JIS とUTF-8など)。
対策としては、環境依存文字を使わないように気を付けること。
また、他のシステムで見れるように、明示的に文字コードを指定すること。
おそらく、Shift-JIS よりも UTF-8 の方が無難である。半角英数は、もっと安全。
では、実際にはどのように信号のやり取りをしているのか?
まずは、「色の情報」をどのようにして扱っているかを整理する。
実際には、様々な方法があるのだけれど、
話を簡単にするために、「RGB」による指定方法を例に解説する。
おそらく、「色の三原色」という言葉を聞いたことの無い人は居まい。
そうそう。「赤(Red)」と「緑(Green)」と「青(Blue)」の三色で、
あらゆる色を表現できるという「アレ」。聞いたことくらいはあるだろう。
コンピュータの中でも、この三原色を使って色を表現する。
一般的には、赤・緑・青の色の強さを、それぞれ、「0〜255」の256段階で指定し、
この3つの色を合成して、色を表現する。
うん?なぜ、256段階なのか?実は、これが重要なポイント。
実は、この値こそが、「1」と「0」の世界を象徴しているのである。
とりあえず、下の表を見てみる。これは、赤・緑・青の値が取り得る範囲を示している。
三原色 | 2進数 | 16進数 | 10進数 |
赤: | 0000 0000 〜1111 1111 | ⇒ 00〜FF | ⇒ 0〜255 |
緑: | 0000 0000 〜1111 1111 | ⇒ 00〜FF | ⇒ 0〜255 |
青: | 0000 0000 〜1111 1111 | ⇒ 00〜FF | ⇒ 0〜255 |
まずは、2進数の場合:
例えば、赤色を表示したい場合には、「1111 1111 0000 0000 0000 0000」となる。
例えば、灰色を表示したい場合には、「1001 1001 1001 0001 1001 0001」となる。
次に、16進数の場合:
例えば、赤色を表示したい場合には、「FF 00 00」となる。
例えば、灰色を表示したい場合には、「99 99 99」となる。
ちなみに、10進数の場合
例えば、赤色を表示したい場合には、「RGB(255, 0, 0)」となる。
例えば、灰色を表示したい場合には、「RGB(153, 153, 153)」となる。
はて?2進数...16進数...10進数...何のことやら?
我々は、「10」を一つの単位をし、9まで数えたら桁を繰り上げる数を使うことが多い。
これを一般的に「10進数」と呼ぶ。これも聞いたことくらいはあるハズ。
ちなみに、時計は60を単位としているので、60進数と呼ぶ。これは、常識。
数学の世界では、数を数える方法には、いくつかの方法が存在している。
2進数というのは、つまりは、0と1で表す方法。
1を単位とし、1まで数えたら次に「10」となるような数え方。
一般的に、この2進数の1桁分をビット(bit)と呼ぶ。
上の例だと、赤・緑・青がそれぞれ8bitで表されていて、
それらを組み合わせた色は、24bitで表現できる。
「24bitでそんなに多くの色を表現できるハズが無い!」と言う人がいるかもしれないが、
実際に、どの程度の色が表現できるのかというと、
なんと、「2の24乗」で「16,777,216 色」もの組み合わせが出来るのである。
さて、上の表では、16進数というのも併記してある。これは何か?
16進数というのは、9まで数えると、A⇒B⇒C⇒D⇒E⇒Fと上がっていき、
「15」まで変えぜたら次に位が一つ上がって「10」になるような数値である。
10進数と区別できないので、「0x10」のように前に「0x」を付けるのが慣例。
実を言うと、コンピュータの世界では「2進数の代わり」に、
16進数を用いることが多い。2進数だと、桁を数えるのが大変であるし、
10進数だと2進数に変換するのが面倒。だから、16進数で表す。
うん?なぜ、16進数だと変換が楽なのか?
とりあえず、下の図を見てみる。
実は、2進数と16進数には「面白い関係」があって、
2進数を「4桁」ずつに区切って「16進数」に置き換えることができるので、
0000〜1111までに対応する16進数さえ覚えておけば、それ以上を覚える必要はない。
最近では、すっかり、2進数や16進数でデータを扱うことは少なくなったが、
現在でもエラーメッセージなどでは、16進数がコッソリと表示されているし、
マイコン開発などでは、今でも2進数や16進数でプログラムを書くことがある。
まぁ、マニアックな話なので、この話はいずれ...。
さて、話を元に戻して...。
コンピュータでは、多くの機器がこの方法で色を表現していて、
ディスプレイの表示も、結果的には、2進数の信号として扱われているのである。
なるほど。とりあえず、色のことは解った。
では文字はどのように表すのか?
意欲的な人は、そんな疑問を持つことであろう。
ということで、ここからが「本題」。
実は、文字の場合も同じ。結果的には2進数で表すことができる。
ただし、文字の場合は、2進数に変換可能な対応表のようなものを用意し、
この対応表を参照することで、文字を表示する。これが重要!
実際には、その対応表を参照する方法は様々で、
本格的なシステムを構築するためには、かなり詳しいことを知っておく必要があるのだが、
今回は、基本的な話だけ。
さてさて、コンピュータの世界では、「文字化け」という現象が生じるが、
実は、この原因は、要するに文字の対応表にある。
以下の話を知っておけば、回避できることも増えるハズ。
とりあえず、最も基本的な対応表を見てみる。
これは、「American Standard Code for Information Interchange」の略で、
「ASCII(アスキー)」と呼ばれている文字コード。歴史は長いが、「超」基本。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +A | +B | +C | +D | +E | +F | |
0x00 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
0x10 | DLE | CD1 | DC2 | EC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
0x20 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
0x30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
0x40 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
0x50 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
0x60 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
0x70 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
この文字コード表は、1960年代に標準化され、現在でも広く使われている。
アルファベットを含む128文字が定義されていて、その内、33文字は「制御文字」。
制御文字は、モニタやプリンタの制御に使うもので、今回は詳しい説明はしない。
さて、試しに、「Hello」というのをこの文字コード表を使って表現してみる。
16進数:0x48 0x65 0x6C 0x6C 0x6F
2進数 :0100 1000 0110 0101 0110 1100 0110 1100 0110 1111
このように、コンピュータが扱える2進数に変換されている。中々、面白い。
ここで、注意しないといけないのが、大文字と小文字の区別が存在していること。
つまり、「Hello」と「hello」と「HELLO」は、それぞれ「全く異なる」信号となる。
紙の世界に慣れていると、この辺りの認識がちゃんとできないのであるが、
コンピュータの世界においては極めて重要な問題なのである。
さて、ここには、アルファベットしか存在していない。日本語は?
実は、日本語はASCIIコードには含まれていないのである。
日本語を扱うための文字コード表は「別」に存在している。
最も有名な文字コード表が「Shift_JISコード」と呼ばれる文字コード。以下は、その一部。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +A | +B | +C | +D | +E | +F | |
0x00 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
0x10 | DLE | CD1 | DC2 | EC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
0x20 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
0x30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
0x40 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
0x50 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
0x60 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
0x70 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
0x80 | ・ | ・ | ・ | ・ | IND | NEL | SSA | ESA | HTS | HTJ | VTS | PLD | PLU | RI | SS2 | SS3 |
0x90 | DCS | PU1 | PU2 | STS | CCH | MW | SPA | ESP | ・ | ・ | ・ | CSI | ST | OSC | PM | APC |
以下の英数字は「JIS漢字」に含まれる | ||||||||||||||||
0x8240 | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | 0 | |
0x8250 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ・ | ・ | ・ | ・ | ・ | ・ | ・ |
0x8260 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
0x8270 | Q | R | S | T | U | V | W | X | Y | Z | ・ | ・ | ・ | ・ | ・ | ・ |
0x8280 | ・ | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
0x8290 | p | q | r | s | t | u | v | w | x | y | z | ・ | ・ | ・ | ・ | |
文字化けの原因となる使用禁止の文字 | ||||||||||||||||
0xA0 | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | ゥ | ェ | ォ | ャ | ュ | ョ | ッ | |
0xB0 | ー | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ |
0xC0 | タ | チ | ツ | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | ヘ | ホ | マ |
0xD0 | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | レ | ロ | ワ | ン | ゙ | ° |
・ ・ ・ |
・ ・ ・ |
|||||||||||||||
0x8740 | ① | ② | ③ | ④ | ⑤ | ⑥ | ⑦ | ⑧ | ⑨ | ⑩ | ⑪ | ⑫ | ⑬ | ⑭ | ⑮ | ⑯ |
0x8750 | ⑰ | ⑱ | ⑲ | ⑳ | Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ | ・ | ㍉ |
0x8760 | ㌔ | ㌢ | ㍍ | ㌘ | ㌧ | ㌃ | ㌶ | ㍑ | ㍗ | ㌍ | ㌦ | ㌣ | ㌫ | ㍊ | ㌻ | ㎜ |
0x8770 | ㎝ | ㎞ | ㎎ | ㎏ | ㏄ | ㎡ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ・ | ㍻ | |
0x8780 | 〝 | 〟 | № | ㏍ | ℡ | ㊤ | ㊥ | ㊦ | ㊧ | ㊨ | ㈱ | ㈲ | ㈹ | ㍾ | ㍽ | ㍼ |
0x8790 | ≒ | ≡ | ∫ | ∮ | ∑ | √ | ⊥ | ∠ | ∟ | ⊿ | ∵ | ∩ | ∪ | ・ | ・ | ・ |
実は、Shift_JISでは、最初の部分がASCIIコードと同じで、
後ろの部分に、日本語特有の文字を加えている。
まず、注意してもらいたいのが、「JIS漢字」と呼ばれる部分に定義されている文字。
この部分には、全角の数字とアルファベットが含まれる。実は、「漢字扱い」なのである。
「半角」と「全角」の英数は似て非なるもの。全角英数は、日本が独自。
次に、「文字化け」の原因となる部分。無意識に使っていないだろうか?
この部分は、機種依存文字と呼ばれる文字が定義されている部分。
正式に標準化されているのではなく、メーカーが勝手に定義している部分。
以前は「機種依存文字」と呼ばれていたもので、
現在では、「環境依存文字」と呼ばれているもの。
文系理系を問わず、常識として知っておいた方が良い。
見た目に惑わされて、この部分の文字を好んで使う人は非常に多いが、
日本製のソフトウェア以外は、対応していないことが多い。
データベースを構築したり、ホームページを作るときにもエラーの原因となる。
ましてや、この部分の文字を組み合わせた「ⅩⅩ」などは、言語道断!
「文字化け」が発生した場合に、元に戻せない。
この問題の「おかげ」で、私は、一体どれほどの無駄な時間を費やしたことか...。
注意しても、誰も聞いてくれない...文書化までしたのに...。そんな人とは仕事をしない...。
ましてや、ボランティアで対応できるような問題じゃない!
っと、まぁ、開発者に、そういったことを言わせないための知識と対策は必要かと。
さて、Shift_JIS の場合、「0x8540~ 0x889e」は、環境依存文字であり、
「0xeb40~ 0xeffc」は、Mac と Windows との互換が無い部分。
そして「0xf040〜」は「外字」を定義する部分なので使ってはいけない。
そういえば、考古学や文献学の人は、存在しない漢字を勝手に作ってしまう傾向にあるが、
そのような行為は、データを交換する上で大きな問題となってしまい、
システム技術者に非常に大きな負担をかけることになる。モラルとして...ね。
さて、日本語を扱える文字コード表は、Shift_JIS コードだけかというと、そうでは無い。
Linux や Mac では、UTF-8 と呼ばれる文字コードを使っている。
これは、Unicode(ユニコード)と呼ばれる文字の一覧を参照する方式。
UTF-8 は、Shift_JIS と異なり、最初から国際化を前提としていて、
様々な国の文字を扱うことができる。アラビア語やギリシア文字、キリル文字なども。
実は、「文字化け」の問題を最小限に抑えるには、UTF-8 の方が無難。
ところで、文字コードが間違って指定されたら何が起きるか?
Windows で作成したテキストが、Mac と Linux で「文字化け」。よくある話。
以下は、簡単な例。
この例は、Windows の「メモ帳」でテキストファイルを作成し、保存したものを、
Mac で開いた例。日本語のメッセージが完全に文字化けしている。
Windows ではShift JIS を使い、Mac ではUTF-8 を使っているのが原因。
あれ?と思った人もいるかもしれない。半角英数の部分は文字化けしていない。
実は、Shift_JIS も UTF-8 も半角英数の部分に関しては、ASCII コードと互換があるので、
ASCII コードで定義された文字に関しては、文字化けが起きないのである。
「フォルダやファイル名は、半角英数で書くのが基本中の基本」と言われるが、
実は、この問題を回避するため。日本語のファイル名は避けた方が良いのである。
とはいえ、ASCIIコードで定義されている領域であっても、記号類は避けた方が良い。
記号類には、システム上で特殊な役割を担っている場合があるため。
安全なのは「_(アンダースコア)」だけ。コレ以外は、使わないのがマナー。
さて、Windows のメモ帳の場合であれば、実は、ファイルを保存するときに、
文字コードの指定というのができる。意外に知らない人が多いのだが。
とりあえず、以下のようにしておけば、Mac と Linux を使っている人には有難い。
もちろん、ここで挙げた問題は、ホームページでも起こり得る話。
実は、自治体のホームページに有りがち...。部署ごとにページを作っているのか、
ページによって、文字コードの指定が異なっていることもある。
こっちに合わすと、あっちで文字化け。あっちに合わすとこっちで文字化け...。
ふむふむ。不安な人は、Linux や Mac でホームページにアクセスして確認を。
そうそう。そういったページは、iPad から見ても文字化けするのであった。どうだろう?
もちろん、Excel などでも、文字コードの気遣いが必要で、
特に、CSV形式などのテキスト形式で保存する時には、指定するべきである。
とは言うものの、私は、Excel での対処方法を知らない。そもそも、できるのか?
さて、本日のまとめ。
コンピュータは「1」と「0」で情報を扱う。
文字の場合は、文字コード表を参照し、そのコードを「1」と「0」に変換する。
文字コードを間違えて指定すると文字化けする。
指定を間違える可能性は、大きく分けて二つ。
一つ目は、環境依存文字など、正式では無い文字コードを使った場合。
二つ目は、そもそも、異なる文字コード表を用いた場合(Shift-JIS とUTF-8など)。
対策としては、環境依存文字を使わないように気を付けること。
また、他のシステムで見れるように、明示的に文字コードを指定すること。
おそらく、Shift-JIS よりも UTF-8 の方が無難である。半角英数は、もっと安全。
0 件のコメント:
コメントを投稿