Apa pengkodean karakter default?

8

Saya sendiri tidak tahu seberapa dalam pertanyaan ini sebenarnya (misalnya, untuk semua yang saya tahu mungkin ada beberapa, tergantung pada tugas saya).

Khususnya, saya tertarik pada jenis string apa yang digunakan untuk memberi nama file dan folder pada sistem.

Saya juga tertarik pada bagaimana string direpresentasikan secara default untuk skrip bash atau python.

gabkdlly
sumber
Itu pertanyaan yang bagus terutama jika Anda dikonversi dari Windows dan berkontribusi kode sumber ke beberapa sistem kontrol versi. Setelah beralih ke Ubuntu Anda tiba-tiba dapat mengalami karakter khusus yang tidak dapat dibaca, karena Windows biasanya tidak menggunakan UTF-8.
Bananeweizen

Jawaban:

3
  • Pengkodean nama file pada sistem file adalah utf-8.
  • Bash berpikir dalam byte, bukan dengan string-with-encoding-knowledge. Jadi tidak ada encoding default. Pengkodean default gnome-terminal adalah utf-8
  • Pengkodean standar Python adalah ascii
Dennis Kaarsemaker
sumber
Python 3 (saya pikir?) Berubah menjadi string unicode secara default.
Broam
Tipe str () Python 3 adalah objek unicode dalam pengkodean UCS-2 atau UCS-4 secara internal. Bagaimana data dibaca atau ditulis dari misalnya file dan stdin harus ditentukan oleh pengembang aplikasi / perpustakaan, dengan utf-8 menjadi standar (mis. Cetak (some_str) akan mencetak representasi utf-8).
Dennis Kaarsemaker
Python 3 akan pergi unicode seperti Ruby 1.9 Python 2 dan kurang, seperti Ruby 1.8 dan kurang berbasis ascii dan bekerja dengan semua charset, tetapi gagasan mereka tentang jumlah karakter untuk string unicode salah. (yang biasanya bukan masalah)
Ralf
3
gnome-terminal tidak default ke utf-8; itu hanya menggunakan apa pun yang diatur oleh lokal Anda. (Ketika saya menemukan jalan yang sulit baru-baru ini.)
Frabjous
1
@DennisKaarsemaker Tidak, Python3 tidak meninggalkan penyandian hanya untuk pengembang dan menggunakan default UTF-8. Stdin dan -out misalnya menggunakan penyandian lingkungan secara default!
Robert Siemer
7

Pengkodean karakter default adalah UTF-8 (Unicode), meskipun hampir semua (sangat mungkin semua pada instalasi default) nama file adalah karakter ASCII biasa, umum untuk sebagian besar pengkodean.

Saya tidak tahu apa yang Anda maksud dengan "berapa banyak string yang diwakili oleh skrip bash atau python". Anda dapat menggunakan karakter Unicode dalam skrip bash di Ubuntu, tetapi biasanya dengan skrip bash, Anda memanggil program lain, dan apakah program lain itu akan menanganinya adalah masalah lain. Tentunya mungkin juga untuk melakukannya dengan Python, meskipun Anda ingin membiasakan diri dengan paket dan pengaturan yang terkait dengannya.

luar biasa
sumber