Ini bukan pertanyaan pemrograman, apakah ada baris perintah atau alat Windows (Windows 7) untuk mendapatkan pengkodean file teks saat ini? Tentu saya bisa menulis aplikasi C # tapi saya ingin tahu apakah ada sesuatu yang sudah ada di dalamnya?
206
Jawaban:
Buka file Anda menggunakan Notepad vanilla tua biasa yang datang dengan Windows.
Ini akan menunjukkan kepada Anda penyandian file ketika Anda mengklik " Simpan Sebagai ... ".
Ini akan terlihat seperti ini:
Apa pun pengkodean yang dipilih default, itulah pengkodean Anda saat ini untuk file.
Jika UTF-8, Anda dapat mengubahnya ke ANSI dan klik simpan untuk mengubah pengkodean (atau visa-sebaliknya).
Saya menyadari ada banyak jenis pengkodean, tetapi ini yang saya butuhkan ketika saya diberitahu bahwa file ekspor kami ada di UTF-8 dan mereka membutuhkan ANSI. Itu adalah ekspor sekali pakai, jadi Notepad cocok untuk saya.
FYI: Dari pemahaman saya, saya pikir " Unicode " (sebagaimana tercantum dalam Notepad) adalah istilah yang keliru untuk UTF-16.
Lebih lanjut di sini pada opsi " Unicode " Notepad : Windows 7 - UTF-8 dan Unicdoe
sumber
'File' alat baris perintah (Linux) tersedia di Windows melalui GnuWin32:
http://gnuwin32.sourceforge.net/packages/file.htm
Jika Anda telah menginstal git, itu terletak di C: \ Program Files \ git \ usr \ bin.
Contoh:
sumber
file
perintah di cygwin . Semua perangkat POSIX untuk Windows seharusnyafile
.Jika Anda memiliki "git" atau "Cygwin" di Mesin Windows Anda, kemudian pergi ke folder tempat file Anda ada dan jalankan perintah:
Ini akan memberi Anda detail pengodean dari semua file di folder itu.
sumber
file *
perintahfile --mime-encoding
untuk mendapatkan penyandian fileAlat lain yang menurut saya berguna: https://archive.codeplex.com/?p=encodingchecker EXE dapat ditemukan di sini
sumber
Inilah cara saya mendeteksi keluarga Unicode dari penyandian teks melalui BOM. Keakuratan metode ini rendah, karena metode ini hanya berfungsi pada file teks (khususnya file Unicode), dan standarnya adalah
ascii
ketika BOM tidak ada (seperti kebanyakan editor teks, defaultnya adalahUTF8
jika Anda ingin mencocokkan ekosistem HTTP / web) ).Pembaruan 2018 : Saya tidak lagi merekomendasikan metode ini. Saya merekomendasikan menggunakan file.exe dari GIT atau * nix tools seperti yang direkomendasikan oleh @Sybren, dan saya menunjukkan cara melakukannya melalui PowerShell di jawaban nanti .
Rekomendasi: ini dapat bekerja cukup baik jika
dir
,ls
atauGet-ChildItem
hanya memeriksa dikenal file teks, dan ketika Anda hanya mencari "pengkodean buruk" dari daftar yang dikenal alat. (yaitu SQL Management Studio default ke UTF16, yang memecahkan GIT auto-cr-lf untuk Windows, yang merupakan default selama bertahun-tahun.)sumber
Get-FileEncoding
sepertinya tidak ada di sistem saya. Apakah ini cmdlet khusus?Get-FileEncoding
pada kode pos. Saya bahkan telah meninjau punycode dari python dan nodejs, tetapi versi kecil ini mencapai 80/20 untuk penggunaan saya (lebih seperti 99/1). Jika Anda meng-hosting file orang lain, saya sarankan Anda menggunakanfile
perintah dari jawaban Syben ( stackoverflow.com/a/34766140/195755 ) atau decoder unicode lain yang berkualitas.default
penyandian (bila tidak ada BOM). Untuk XML, JSON, dan JavaScript defaultnya adalah UTF8, tetapi jarak tempuh Anda mungkin beragam.Saya menulis jawaban # 4 (pada saat penulisan). Tapi akhir-akhir ini saya telah menginstal git di semua komputer saya, jadi sekarang saya menggunakan solusi @ Sybren. Berikut ini adalah jawaban baru yang membuat solusi itu berguna dari PowerShell (tanpa meletakkan semua git / usr / bin di PATH, yang terlalu banyak kekacauan bagi saya).
Tambahkan ini ke Anda
profile.ps1
:Dan digunakan seperti:
file.exe --mime-encoding *
. Anda harus memasukkan .exe dalam perintah agar PS alias berfungsi.Tetapi jika Anda tidak menyesuaikan profil PowerShell Anda. Saya sarankan Anda mulai dengan milik saya: https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 dan simpan untuk
~\Documents\WindowsPowerShell
. Aman digunakan di komputer tanpa git, tetapi akan menulis peringatan saat git tidak ditemukan.The .exe di perintah juga bagaimana saya menggunakan
C:\WINDOWS\system32\where.exe
dari PowerShell; dan banyak perintah CLI OS lainnya yang "disembunyikan secara default" oleh powershell, * shrug *.sumber
file
sebagai alias Anda ke file.exe, bukanfile.exe
¯ \ _ (ツ) _ / ¯dir | where Size -lt 10000
vswhere.exe git
.where.exe
untuk membedakannya dariwhere
dalam PS, yang merupakan alias bawaan untukWhere-Object
. Contoh:where.exe git*
vsls . | where Size -lt 10000
file.exe
vs .NET kelas statis, yang mungkin Anda butuhkan dalam skrip yang sama yang mendeteksi pengkodean. Contoh:[File]::SetCreationTime("readme.md", [DateTime]::Now)
.Solusi sederhana mungkin membuka file di Firefox.
dan penyandian teks akan muncul di jendela "Info Halaman".
Catatan: Jika file tidak dalam format txt, cukup ganti namanya menjadi txt dan coba lagi.
PS Untuk info lebih lanjut lihat artikel ini .
sumber
Instal git (pada Windows Anda harus menggunakan git bash console). Tipe:
untuk semua file di direktori saat ini, atau
untuk file di semua subdirektori
sumber
Anda dapat menggunakan utilitas gratis yang disebut Encoding Recognizer (memerlukan java). Anda dapat menemukannya di http://mindprod.com/products2.html#ENCODINGRECOGNISER
sumber
Mirip dengan solusi yang tercantum di atas dengan Notepad, Anda juga dapat membuka file di Visual Studio, jika Anda menggunakannya. Di Visual Studio, Anda dapat memilih "File> Advanced Save Options ..."
Kotak kombo "Pengodean:" akan memberi tahu Anda secara spesifik pengodean mana yang sedang digunakan untuk file tersebut. Ini memiliki lebih banyak penyandian teks yang terdaftar di sana daripada Notepad, jadi ini berguna ketika berurusan dengan berbagai file dari seluruh dunia dan apa pun yang lainnya.
Sama seperti Notepad, Anda juga dapat mengubah pengkodean dari daftar opsi di sana, dan kemudian menyimpan file setelah menekan "OK". Anda juga dapat memilih pengkodean yang Anda inginkan melalui opsi "Simpan dengan Pengkodean ..." di dialog Simpan Sebagai (dengan mengeklik panah di sebelah tombol Simpan).
sumber
Beberapa kode C di sini untuk deteksi ascii, bom, dan utf8 yang andal: https://unicodebook.readthedocs.io/guess_encoding.html
EDIT:
Versi Powerhell jawaban C # dari: Cara efektif untuk menemukan Pengkodean file apa pun . Hanya bekerja dengan tanda tangan (boms).
sumber
Satu-satunya cara yang saya temukan untuk melakukan ini adalah VIM atau Notepad ++.
sumber