python言語の文字列とバイト

1937 ワード

目次
  • (一)文字列の本質
  • (二)一般的な文字符号化
  • (3)バイトとテキストの符号化
  • (四)BOM処理
  • (一)文字列の本質


    メモリには復号後のテキストが常に格納され、符号化はファイル格納と中間メディア変換にのみ作用する.

    (二)一般的な文字符号化

    # 
    ord('A')
    65
    # 
    chr(65)
    'A'
  • ASCII(1つのByte 0-127を格納)
  • latin-1(Byte 128-255を格納)
  • UTF 16(2バイト格納文字)
  • UTF 32(4バイト格納文字)
  • UTF 8(可変バイト)
  • (三)バイトとテキストの符号化


    エンコーディング
    bytesに変わる
    s1 = 'ABCD'
    s1.encode('ascii')
    b'ABCD'
    s1 = ' '
    s1.encode('utf8')
    b'\xe4\xb8\xad\xe5\x9b\xbd'
    --------------------------------------------
    # 
    open('data.txt','rb').read()
    b'\xd6\xd0\xb9\xfa'
    ---------------------------------------------
    bytes(' ','utf8')
    b'\xe4\xb8\xad\xe5\x9b\xbd'
    bytes([64,75,85])
    b'@KU'
    ---------------------------------------------
    b = b'abc'
    type(b)
    

    bytearrayに移行
    s1 = ' '
    ba = bytearray(s1,'utf8')
    type(ba)
    
    ba
    bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd')
    ba.append(21)# 256
    ba
    bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15')
    ba + b'abc'
    bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
    ba.decode('utf8')
    ' \x15'

    符号化フォーマットを指定しないで、システムのデフォルトはutf 8を採用します
    ファイルにデータを書き込み、デフォルトの符号化フォーマットはオペレーティングシステムの符号化フォーマットです.
    デコード
    b = b'\xe4\xb8\xad\xe5\x9b\xbd'
    b.decode('utf8')
    ' '
    ---------------------------------------------
    bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
    ba.decode('utf8')
    ' \x15'

    (四)BOM処理


    BOM:バイト順タグ
    open('data.txt','W',encoding='utf-8-sig')
    open('data.txt','r',encoding='utf-8-sig')