Saya punya beberapa masalah dengan file subtitle dalam video omxplayer. Untuk mengatasinya saya harus mengkonversi dari Windows-1250 ke UTF-8 encoding. Pertanyaan saya adalah, bagaimana saya bisa melihat file tertentu yang menggunakan pengkodean?
23
piconv
untuk mengubah pengkodean;)Jawaban:
Anda tidak dapat benar-benar mengetahui secara otomatis apakah suatu file ditulis dengan penyandian X.
Apa yang dapat Anda lakukan dengan mudah adalah memverifikasi apakah file lengkap dapat berhasil diterjemahkan entah bagaimana (tetapi tidak harus dengan benar) menggunakan codec tertentu. Jika Anda menemukan byte yang tidak valid untuk pengkodean yang diberikan, itu pasti sesuatu yang lain.
Masalahnya adalah banyak codec yang serupa dan memiliki "pola byte yang valid" yang sama, hanya menafsirkannya sebagai karakter yang berbeda. Misalnya,
ä
pengkodean dalam satu mungkin sesuai dengan yangé
lain atauø
dalam yang ketiga. Komputer tidak dapat benar-benar mendeteksi cara menafsirkan hasil byte dalam teks yang dapat dibaca manusia dengan benar (kecuali jika Anda menambahkan kamus untuk semua jenis bahasa dan membiarkannya melakukan pemeriksaan ejaan ...). Anda juga harus tahu bahwa beberapa set karakter sebenarnya adalah himpunan bagian dari yang lain, seperti misalnya pengkodean ASCII adalah bagian dari codec yang paling umum digunakan seperti beberapa keluarga ANSI atau UTF-8. Itu berarti misalnya teks yang disimpan sebagai UTF-8 yang hanya berisi karakter latin sederhana, itu akan identik dengan file yang sama disimpan sebagai ASCII.Namun, mari kita kembali dari menjelaskan apa yang tidak dapat Anda lakukan ke apa yang sebenarnya dapat Anda lakukan:
Untuk pemeriksaan dasar pada file teks ASCII / non-ASCII (biasanya UTF-8), Anda dapat menggunakan
file
perintah. Itu tidak tahu banyak codec dan hanya memeriksa beberapa kB pertama file, dengan asumsi bahwa sisanya tidak akan mengandung karakter baru. Di sisi lain, ia juga mengenali tipe file umum lainnya seperti berbagai skrip, dokumen HTML / XML dan banyak format data biner (yang semuanya tidak menarik untuk membandingkan file teks) dan mungkin dapat mencetak informasi tambahan apakah ada garis yang sangat panjang atau apa. jenis urutan baris baru (misalnya UNIX: LF, Windows: CR + LF) digunakan.Jika itu tidak cukup, saya dapat menawarkan kepada Anda skrip Python yang saya tulis untuk jawaban ini di sini , yang memindai file lengkap dan mencoba memecahkan kode menggunakan set karakter yang ditentukan. Jika berhasil, pengodean itu adalah kandidat potensial. Kalau tidak, jika ada byte yang tidak dapat diterjemahkan dengan itu, Anda dapat menghapus set karakter dari daftar Anda.
sumber
Sebuah program bernama
file
dapat melakukan ini. Contoh:Jika Anda tertarik untuk melakukannya, lihat
src/encoding.c
.sumber
file
membuat tebakan, dan sering kali itu tidak terlalu bagus. Sebagai contoh, dalam pengujian saya, salah mengidentifikasi MacRoman dan CP-1252 sebagai ISO-8859, dengan hasil bahwa "š" dan "ß" diacak..sql
file lama saya danfile
menunjukkan kepada saya bahwa itu memanggzip
file terkompresi!