1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

3-3、Pythonの文字列と文字コード

Posted at

##文字コード
 文字列は文字コードの関係で特殊なデータ型となる。

 コンピュータは数字しか処理できないため、テキスト形式の文字等は数字に変換しないといけない。最初にコンピュータを設計された時に、1バイト(byte)は8ビット(bit)となり。1バイトで表示できる最大の整数は255(2進数の11111111は10進数の255)となり、もっと大きな整数を表示する為、たくさんバイトが必要となる。例えば、2バイトで表示できる最大整数は65535、4バイトは4294967295である。

コンピュータ開発は、米国を中心に進められ、最初に規格された文字コードは128個しかない。この文字コードはASCIIと言い、英語で使われる英数字、記号、スペース、改行等の対応が全部できる。例:Aの文字コードは65zの文字コードは122となる。

 日本語を処理する為、1バイトは当然足りない、2バイトをしないといけない。しかし、ASCIIと同じが使え無い為、日本はJISコードを作成した。その他の国も、ASCIIを基に各国版の文字コードが作成られた。その結果は、多言語が混在されているテキストファイルに対して、化け文字が表示された。

 化け文字を対策する為、Unicodeが生まれた。全ての言語を一つの文字コード(Unicode)に統一された。Unicodeはまだ改善中だが、普通に使われる文字は全部2バイトで処理している。

 文字列AのASCIIは10進数の65、2進数の01000001である。
 文字列0のASCIIは10進数の48、2進数の00110000である。
 (注意:文字列の0と数字の0は同じではない。)
 ASCIIのAをUnicodeを表示する為、その前に0を入れば良い。AのUnicodeの文字コードは00000000 01000001となる。ここで、新しい問題が出てくる。Unicodeを使うと化け文字は無くなったが、全部英語のテキストデータに対して、ASCIIより倍のデータ量となる。
 それを解決するため、可変長なUTF-8を作成した。UTF-8では、1文字のUnicodeの大きさによって、1バイトから6バイトに変換した。アルファベットなどは1バイト、普通の漢字は1~3バイト、あまり使わない漢字は4~6バイトもある。

E697A5 日  110010111100101 11100110 10010111 10100101

目次 非IT業種のITメモ

参考:
 ・文字コード講座 第1回―文字コードの歴史(Unicode前史)
 ・Pythonでの文字コードの取り扱い

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?