BOM
次のコードを実行したときの出力として、正しいものを1つ選べ。
b = b"\xef\xbb\xbfa,b"
print(len(b.decode("utf-8")), len(b.decode("utf-8-sig")))
- A
4 3 - B
3 3 - C
4 4 - D
3 4
正解と解説を見る
正解:A
BOM 付きの UTF-8 は、encoding="utf-8-sig" で読むと BOM が取り除かれる。BOM を残して読むと、先頭の列名に見えない文字が付く。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `b = b"\xef\xbb\xbfa,b"` | b = b'\xef\xbb\xbfa,b' |
| 2 | `print(len(b.decode("utf-8")), len(b.decode("u…` | b = b'\xef\xbb\xbfa,b' |
| 結果 | 実際の出力 | 4 3 |
- A
正しい。BOM(byte order mark)は、
utf-8では1文字として残り、utf-8-sigでは取り除かれる。 - B
誤り。
utf-8では BOM が文字として残る。 - C
誤り。
utf-8-sigは BOM を取り除く。 - D
誤り。
utf-8とutf-8-sigが逆。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。