LoginSignup
0
5

More than 5 years have passed since last update.

Python で学ぶ文字コード

Posted at

Python 2.7 のドキュメントを読んだ学んだことまとめ

Unicode HOWTO — Python 2.7.13 documentation
https://docs.python.org/2/howto/unicode.html

7.8. codecs — Codec registry and base classes — Python 2.7.13 documentation
https://docs.python.org/2/library/codecs.html#encodings-and-unicode

歴史的経緯

1968 年頃

ASCII(American Standard Code for Information Interchange) によって 0-127 の数字が文字に割り当てられていた。
例) a: 97

$ python -V
Python 2.7.10

>>> unichr(97)
u'a'

>>> ord('a')
97

unichr(i) - 2. Built-in Functions — Python 2.7.13 documentation
ord(i) - 2. Built-in Functions — Python 2.7.13 documentation

だがヨーロッパで使われる é やロシアのキリル文字は表せなかった。

1980 年代

8bit (2^8 = 256) のコンピューターが主流になり、128-255 にそれぞれが独自の形式で文字が割り当てていた。

この違いを解消するために Unicode が開発されることになった。

Unicode

定義

The Unicode standard describes how characters are represented by code points.

Character: a
code points: 97 (0x61)

使用する数

当初、Unicode は 16bit (65,536)を使用していた。
現在は 0–1,114,111(0x10ffff) の幅を持っている。

a Unicode string is a sequence of code points, which are numbers from 0 to 0x10ffff.

Encodings

The rules for translating a Unicode string into a sequence of bytes are called an encoding.

>>> 'a'.encode('hex')
'61'

Python コード

$ python -V
Python 2.7.10

>>> s = 'a b c x y z'
>>> s.encode('hex')
'612062206320782079207a'

vim - Insert モード

CTRL-v + u0061a が入力される。

参考

Python Character Mapping Codec cp1252 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT' with gencodec.py.

0
5
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
0
5