Saya ingin tahu apakah mungkin untuk menyimpan semua file dalam proyek Visual Studio 2008 ke dalam pengkodean karakter tertentu. Saya mendapat solusi dengan pengkodean campuran dan saya ingin membuat semuanya sama (UTF-8 dengan tanda tangan).
Saya tahu cara menyimpan satu file, tetapi bagaimana dengan semua file dalam sebuah proyek?
visual-studio
utf-8
character-encoding
jesperlind
sumber
sumber
GlobalSuppressions.cs
UTF-16.Jawaban:
Karena Anda sudah menggunakan Visual Studio, mengapa tidak langsung menulis kodenya?
foreach (var f in new DirectoryInfo(@"...").GetFiles("*.cs", SearchOption.AllDirectories)) { string s = File.ReadAllText(f.FullName); File.WriteAllText (f.FullName, s, Encoding.UTF8); }
Hanya tiga baris kode! Saya yakin Anda dapat menulis ini dalam waktu kurang dari satu menit :-)
sumber
Ini mungkin membantu!
Versi singkat: edit satu file, pilih File -> Advanced Save Options. Alih-alih mengubah UTF-8 menjadi Ascii, ubahlah menjadi UTF-8. Edit: Pastikan Anda memilih opsi yang mengatakan no byte-order-marker (BOM)
Atur halaman kode & tekan ok. Tampaknya tetap ada setelah file saat ini.
sumber
Jika Anda perlu melakukan ini di PowerShell, inilah langkah kecil saya:
sumber
Saya akan mengonversi file secara terprogram (di luar VS), misalnya menggunakan skrip Python:
import glob, codecs for f in glob.glob("*.py"): data = open("f", "rb").read() if data.startswith(codecs.BOM_UTF8): # Already UTF-8 continue # else assume ANSI code page data = data.decode("mbcs") data = codecs.BOM_UTF8 + data.encode("utf-8") open("f", "wb").write(data)
Ini mengasumsikan semua file yang tidak ada dalam "UTF-8 dengan tanda tangan" ada di halaman kode ANSI - ini sama dengan yang tampaknya juga diasumsikan oleh VS 2008. Jika Anda mengetahui bahwa beberapa file memiliki pengkodean yang berbeda, Anda harus menentukan apa pengkodean tersebut.
sumber
Menggunakan C #:
1) Buat Aplikasi Konsol baru, lalu instal Mozilla Universal Charset Detector
2) Jalankan kode:
static void Main(string[] args) { const string targetEncoding = "utf-8"; foreach (var f in new DirectoryInfo(@"<your project's path>").GetFiles("*.cs", SearchOption.AllDirectories)) { var fileEnc = GetEncoding(f.FullName); if (fileEnc != null && !string.Equals(fileEnc, targetEncoding, StringComparison.OrdinalIgnoreCase)) { var str = File.ReadAllText(f.FullName, Encoding.GetEncoding(fileEnc)); File.WriteAllText(f.FullName, str, Encoding.GetEncoding(targetEncoding)); } } Console.WriteLine("Done."); Console.ReadKey(); } private static string GetEncoding(string filename) { using (var fs = File.OpenRead(filename)) { var cdet = new Ude.CharsetDetector(); cdet.Feed(fs); cdet.DataEnd(); if (cdet.Charset != null) Console.WriteLine("Charset: {0}, confidence: {1} : " + filename, cdet.Charset, cdet.Confidence); else Console.WriteLine("Detection failed: " + filename); return cdet.Charset; } }
sumber
Saya telah membuat fungsi untuk mengubah file pengkodean yang ditulis dalam asp.net. Saya banyak mencari. Dan saya juga menggunakan beberapa ide dan kode dari halaman ini. Terima kasih.
Dan inilah fungsinya.
Function ChangeFileEncoding(pPathFolder As String, pExtension As String, pDirOption As IO.SearchOption) As Integer Dim Counter As Integer Dim s As String Dim reader As IO.StreamReader Dim gEnc As Text.Encoding Dim direc As IO.DirectoryInfo = New IO.DirectoryInfo(pPathFolder) For Each fi As IO.FileInfo In direc.GetFiles(pExtension, pDirOption) s = "" reader = New IO.StreamReader(fi.FullName, Text.Encoding.Default, True) s = reader.ReadToEnd gEnc = reader.CurrentEncoding reader.Close() If (gEnc.EncodingName <> Text.Encoding.UTF8.EncodingName) Then s = IO.File.ReadAllText(fi.FullName, gEnc) IO.File.WriteAllText(fi.FullName, s, System.Text.Encoding.UTF8) Counter += 1 Response.Write("<br>Saved #" & Counter & ": " & fi.FullName & " - <i>Encoding was: " & gEnc.EncodingName & "</i>") End If Next Return Counter End Function
Itu dapat ditempatkan dalam file .aspx dan kemudian disebut seperti:
sumber
jika Anda menggunakan TFS dengan VS: http://msdn.microsoft.com/en-us/library/1yft8zkw(v=vs.100).aspx Contoh:
sumber
Terima kasih atas solusi Anda, kode ini berhasil untuk saya:
Dim s As String = "" Dim direc As DirectoryInfo = New DirectoryInfo("Your Directory path") For Each fi As FileInfo In direc.GetFiles("*.vb", SearchOption.AllDirectories) s = File.ReadAllText(fi.FullName, System.Text.Encoding.Default) File.WriteAllText(fi.FullName, s, System.Text.Encoding.Unicode) Next
sumber
Jika Anda ingin menghindari jenis kesalahan ini:
Gunakan kode berikut ini:
Nomor pengkodean 1252 adalah pengkodean Windows default yang digunakan oleh Visual Studio untuk menyimpan file Anda.
sumber
Konversi dari UTF-8-BOM ke UTF-8
Berdasarkan jawaban rasx , berikut adalah fungsi PowerShell yang mengasumsikan file Anda saat ini sudah dikodekan dalam UTF-8 (tetapi mungkin dengan BOM) dan mengubahnya menjadi UTF-8 tanpa BOM, oleh karena itu mempertahankan karakter Unicode yang ada.
sumber
Saya hanya menawarkan saran ini jika tidak ada cara untuk melakukan ini secara otomatis di Visual Studio (saya bahkan tidak yakin ini akan berhasil):
sumber
Masalah encoding yang dialami setelah mengonversi solusi dari VS2008 ke VS2015. Setelah konversi, semua file proyek dikodekan dalam ANSI, tetapi berisi konten UTF8 dan digabungkan sebagai file ANSI di VS2015. Mencoba banyak taktik konversi, tetapi hanya berhasil menyelesaikan solusi ini.
Encoding encoding = Encoding.Default; String original = String.Empty; foreach (var f in new DirectoryInfo(path).GetFiles("*.cs", SearchOption.AllDirectories)) { using (StreamReader sr = new StreamReader(f.FullName, Encoding.Default)) { original = sr.ReadToEnd(); encoding = sr.CurrentEncoding; sr.Close(); } if (encoding == Encoding.UTF8) continue; byte[] encBytes = encoding.GetBytes(original); byte[] utf8Bytes = Encoding.Convert(encoding, Encoding.UTF8, encBytes); var utf8Text = Encoding.UTF8.GetString(utf8Bytes); File.WriteAllText(f.FullName, utf8Text, Encoding.UTF8); }
sumber
item dihapus dari menu di Visual Studio 2017 Anda masih dapat mengakses fungsionalitas melalui File-> Save As -> kemudian mengklik panah bawah pada tombol Save dan mengklik "Save With Encoding ...".
Anda juga dapat menambahkannya kembali ke menu File melalui Tools-> Customize-> Commands jika Anda mau.
sumber