Saya mencoba memasukkan beberapa karakter UTF-8 ke dalam file LaTeX di TextMate (yang mengatakan pengkodean defaultnya adalah UTF-8), tetapi LaTeX tampaknya tidak memahaminya.
Running cat my_file.tex
menunjukkan karakter dengan benar di Terminal. Running ls -al
menunjukkan sesuatu yang belum pernah saya lihat sebelumnya: "@" oleh daftar file:
-rw-r--r--@ 1 me users 2021 Feb 11 18:05 my_file.tex
(Dan, ya, saya menggunakan \usepackage[utf8]{inputenc}
di LaTeX.)
Saya telah menemukan iconv
, tetapi itu tampaknya tidak dapat memberi tahu saya apa pengkodeannya - itu hanya akan dikonversi setelah saya mengetahuinya.
Jawaban:
The
@
berarti bahwa file tersebut memiliki file diperpanjang atribut yang terkait dengan itu. Anda dapat meminta mereka menggunakangetxattr()
fungsi.Tidak ada cara pasti untuk mendeteksi penyandian file. Baca jawaban ini , itu menjelaskan mengapa.
Ada alat baris perintah, enca , yang mencoba menebak penyandian. Anda mungkin ingin memeriksanya.
sumber
@
termasuk atribut pengkodean file. Anda dapat menggunakan perintahxattr -p com.apple.TextEncoding <filename>
untuk melihat atribut penyandian jika ada.ls -l@ <filename>
untuk melihat atribut apa yang ditetapkan untuk file tersebut. Untuk melihat atribut yang sebenarnya, ketikxattr -p com.apple.TextEncoding <filename>
enca
melakukanbrew install enca
dan Anda harus menentukan bahasa tetapi tidak ada yang berhasil, jadi:enca FILENAME -L __
Menggunakan opsi
-I
(itu huruf kapital i) pada perintah file tampaknya menunjukkan penyandian file.sumber
file -I *
tampaknya berfungsi dengan baik untuk saya (di OSX). Suatu sistem mengeluhkan penyandian salah satu dari banyak file, tanpa menentukan yang mana. Semua file ascii, kecuali satu, yang utf-8. Kemungkinan besar pelakunya.Di Mac OS X perintah
file -I
(huruf kapital i) akan memberi Anda set karakter yang tepat selama file yang Anda uji mengandung karakter di luar kisaran ASCII dasar.Misalnya jika Anda masuk ke Terminal dan menggunakan vi untuk membuat file misalnya.
vi test.txt
kemudian masukkan beberapa karakter dan sertakan karakter beraksen (coba ALT-e diikuti oleh e) kemudian simpan file.Mereka mengetik
file -I text.txt
dan Anda akan mendapatkan hasil seperti ini:test.txt: text/plain; charset=utf-8
sumber
file
perintah mengklaim ituus-ascii
alias di suatu tempat dalam konfigurasi bash saya sebagai
jadi saya ketik saja
Pada vanilla OSX Yosemite saya, ini menghasilkan hasil yang lebih tepat daripada "file -I":
sumber
Anda juga dapat mengonversi dari satu jenis file ke yang lain menggunakan perintah berikut:
misalnya
sumber
Cukup gunakan:
Itu dia.
sumber
file -I
membuat sayatext/plain; charset=unknown-8bit
. Meskipun bekerja lebih baik untuk file utf8:text/plain; charset=utf-8
.Menggunakan
file
perintah dengan--mime-encoding
opsi (misalfile --mime-encoding some_file.txt
) sebagai ganti opsi -I bekerja pada OS X dan memiliki manfaat tambahan dengan menghilangkan tipe mime, "text / plain", yang mungkin tidak Anda pedulikan.sumber
file
perintah itu. Tidak tahu kalau ada. Cupu. Bagaimanapun. Maaf tentang downvote. JADI tidak akan membiarkan saya membatalkannya kecuali seseorang mengedit jawaban ini.Classic 8-bit LaTeX sangat terbatas di mana karakter UTF8 dapat digunakan; itu sangat tergantung pada pengkodean font yang Anda gunakan dan mesin terbang mana font yang telah tersedia.
Karena Anda tidak memberikan contoh spesifik, sulit untuk mengetahui dengan tepat di mana masalahnya - apakah Anda mencoba menggunakan mesin terbang yang tidak dimiliki font Anda atau apakah Anda tidak menggunakan pengkodean font yang benar di awal tempat.
Berikut adalah contoh minimal yang menunjukkan bagaimana beberapa karakter UTF8 dapat digunakan dalam dokumen LaTeX:
Anda mungkin lebih beruntung dengan pengkodean [utf8x], tetapi sedikit diperingatkan bahwa itu tidak lagi didukung dan memiliki beberapa keistimewaan dibandingkan dengan [utf8] (sejauh yang saya ingat; sudah lama saya tidak melihatnya). Tetapi jika itu berhasil, itulah yang terpenting bagi Anda.
sumber
Tanda @ berarti file tersebut memiliki atribut yang diperluas .
xattr file
menunjukkan atribut apa yang dimilikinya,xattr -l file
menunjukkan nilai atribut juga (yang kadang-kadang bisa besar - coba misalnyaxattr /System/Library/Fonts/HelveLTMM
untuk melihat font gaya lama yang ada di fork sumber daya).sumber
Mengetik
file myfile.tex
di terminal kadang-kadang bisa memberi tahu Anda pengkodean dan jenis file menggunakan serangkaian algoritma dan angka ajaib. Ini cukup berguna tetapi jangan mengandalkan itu memberikan informasi konkret atau dapat diandalkan.Sebuah
Localizable.strings
berkas (ditemukan dalam aplikasi lokal Mac OS X) biasanya dilaporkan menjadi UTF-16 C file sumber.sumber
Synalyze It! memungkinkan untuk membandingkan teks atau byte di semua penyandian yang ditawarkan perpustakaan ICU . Dengan menggunakan fitur itu, Anda biasanya langsung melihat halaman kode mana yang masuk akal untuk data Anda.
sumber
Anda dapat mencoba memuat file ke jendela firefox kemudian pergi ke View - Character Encoding. Harus ada tanda centang di sebelah jenis penyandian file.
sumber
LaTeX mana yang Anda gunakan? Ketika saya menggunakan teTeX, saya harus mengunduh paket unicode secara manual dan menambahkannya ke file .tex saya:
Sekarang, saya telah beralih ke XeTeX dari paket TeXlive 2008 (di sini ), bahkan lebih sederhana:
Sedangkan untuk mendeteksi penyandian file, Anda bisa bermain
file(1)
(tapi agak terbatas) tetapi seperti kata orang lain, itu sulit.sumber
Cara kasar untuk memeriksa enkode mungkin hanya dengan memeriksa file dalam hex editor atau sejenisnya. (atau tulis program untuk memeriksa) Lihatlah data biner dalam file. Format UTF-8 cukup mudah dikenali. Semua karakter ASCII adalah byte tunggal dengan nilai di bawah 128 (0x80) Urutan multibyte mengikuti pola yang ditunjukkan dalam artikel wiki
Jika Anda dapat menemukan cara yang lebih sederhana untuk mendapatkan program untuk memverifikasi pengkodean untuk Anda, itu jelas jalan pintas, tetapi jika semuanya gagal, ini akan melakukan trik.
sumber
Saya menerapkan skrip bash di bawah, ini berfungsi untuk saya.
Pertama kali mencoba
iconv
dari pengkodean yang dikembalikan olehfile --mime-encoding
keutf-8
.Jika gagal, ia akan melewati semua penyandian dan menunjukkan perbedaan antara file asli dan yang disandikan ulang. Itu melompati pengkodean yang menghasilkan keluaran diff besar ("besar" seperti yang didefinisikan oleh
MAX_DIFF_LINES
variabel atau argumen input kedua), karena mereka kemungkinan besar pengkodean yang salah.Jika "hal buruk" terjadi akibat menggunakan skrip ini, jangan salahkan saya. Ada
rm -f
di sana, jadi ada monster. Saya mencoba untuk mencegah efek buruk dengan menggunakannya pada file dengan akhiran acak, tetapi saya tidak membuat janji.Diuji pada Darwin 15.6.0.
sumber