お知らせ
- この日記を書いてる人:寿 (メールアドレス)
- 文中にネタバレを含む場合があるので、危険を察知したらそれとなく回避してください。
- リンクは適当にどうぞ。
- Twitterはじめました。
平成21年09月23日 [長年日記]
■ UTF-8について
最近、というか結構前からUTF-8ってのはよく聞くようになったが、Unicodeとの違いが分からなかったので色々調べてみました。tdiaryもUTF-8で書かれているし。
で、以下分かったことをつらつらと。
UTF-8とは符号化のこと
Unicodeは文字コードの定義で、UTF-8はその符号化手法の一つを意味するとのことだった。
ちなんで、テキストなどを保存するときの文字コード選択にUnicodeとUTF-8ってのが出てくるのが多いけど、前者はUTF-16っていうべきものだそうな。
UTF-8は可変長
ASCIIと互換性を保つために0x7fまでは一緒、その後は2~4バイトの長さを取るらしい。ちなみに、UTF-16の場合はU+FFFFまでは2バイト固定でそこから先はサロゲートペアってので4バイト使うとのこと。
ということなので、ざっくり言うと、UTF-8の場合はアルファベットとかは1バイト、平仮名とか漢字とかは3バイトになるが、UTF-16の場合はともに2バイトになる。
機種依存文字とか(ここら辺はUnicode対応フォントでないと見られないかも)
Unicodeでは丸数字(①とか)も定義されてるので使っても問題ないみたい。更に⑳より大きいのもあって、㊿まで定義されてる。
ちなんで、Unicode表を見てみると何に使うのかよく分からないものが結構用意されてたりして、見てると割と面白い。そして、昔使いたくても使えなかった「♡」(ハート)とか「ℏ」(魔っ貨記号^H^H^H^H^Hディラック定数ってので使うみたいです)とかもあったり。
RubyのコーディングではUTF-16は使えない
UTF-16の方が日本語中心に文章を書く分には容量的にも有利だし、可変長より普段使う分には固定長の方が扱い易いので、RubyもUTF-16で書けないかと思って調べてみたが、ASCII互換じゃないのでコーディングには使えないってことだった。但し、データとかで文字列を操作するのは使えるみたい。
以上、今後はとりあえずUTF-8使っとけ、ってことで一つ。