Lompat ke konten utama
←

Berkas, Format, dan Data yang Rapi

Pelajaran 3 dari 16

Teks dan encoding · Pelajaran 3

BOM: tiga byte tak terlihat di depan berkas

Setelah pelajaran ini

Pengguna dapat mendeteksi BOM pada sebuah berkas dan membacanya tanpa mengotori nama kolom pertama.

±14 menitDiperiksa 2026-09-23

BOM (byte order mark) adalah karakter U+FEFF yang dipasang di awal berkas. Pada UTF-16 fungsinya menyatakan urutan byte. Pada UTF-8 urutan byte tidak pernah menjadi soal, sehingga BOM di sana hanya berperan sebagai tanda bahwa isinya UTF-8. Unicode menyebut pemakaian itu diizinkan, bukan diwajibkan.

Excel menulis BOM saat berkas disimpan sebagai CSV UTF-8, dan memakainya untuk mengenali encoding ketika berkas itu dibuka kembali. Program lain tidak selalu ikut aturan yang sama. Kalau berkas dibaca dengan encoding utf-8 biasa, tiga byte EF BB BF berubah menjadi satu karakter tak tampak yang menempel di depan nama kolom pertama.

Cara membacaNama kolom pertamaAkibatnya
encoding="utf-8"\ufeffnamabaris["nama"] berhenti dengan KeyError
encoding="utf-8-sig"namaBOM dibuang saat dibaca
mode "rb"byte EF BB BF terlihatdipakai untuk memeriksa ada tidaknya BOM
with open("ekspor.csv", encoding="utf-8-sig", newline="") as f:
    baris = list(csv.DictReader(f))
print(list(baris[0].keys())[0])   # nama, bukan \ufeffnama

Kerusakan ini khas karena nyaris tidak terlihat: berkasnya terbuka normal di spreadsheet, kolomnya bernama benar di layar, dan hanya skrip yang mengeluh. Saat menulis berkas untuk orang lain, encoding utf-8-sig memudahkan Excel; saat menulis untuk sistem lain, utf-8 polos lebih aman.

Latihan 3 dari 3

Skrip membaca CSV ekspor Excel dengan csv.DictReader lalu berhenti dengan KeyError: 'nama', padahal baris pertama berkas jelas bertuliskan nama,kota,total. Penyebab mana yang cocok?

Pilih satu jawaban

Jawaban diperiksa di server. Latihan ini memastikan kamu memahami contohnya — bukan bukti seluruh pekerjaanmu sudah benar.

Catatanmu

Memuat catatan…

Catatan tamu tersimpan di browser ini saja. Masuk kalau ingin membacanya di perangkat lain. 0 dari 4.000 karakter.

Selesaikan latihannya dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Sumber

  1. 1. Unicode FAQ — UTF-8, UTF-16, UTF-32 & BOM — https://www.unicode.org/faq/utf_bom.html
  2. 2. Python — codecs: daftar encoding baku — https://docs.python.org/3/library/codecs.html#standard-encodings
  3. 3. Python — fungsi bawaan open() — https://docs.python.org/3/library/functions.html#open
  4. 4. Microsoft — Import or export text (.txt or .csv) files — https://support.microsoft.com/en-us/office/import-or-export-text-txt-or-csv-files-5250ac4c-663c-47ce-937b-339e391393ba

Dicetak dari https://kelasgratis.com/belajar/format-data-dasar/bom-penanda-tak-terlihat · diperiksa 2026-09-23

Materi ini merujuk dokumentasi resmi (4 sumber). Daftar lengkapnya, beserta lisensinya, ada di halaman Sumber.