วิธีตั้งค่าการเข้ารหัสมาตรฐานใน Visual Studio


101

ฉันกำลังค้นหาวิธีตั้งค่า Visual Studio เพื่อให้มันบันทึกไฟล์ของฉันใน UTF-8 เสมอ

ฉันพบเพียงตัวเลือกในการกำหนดโครงการนี้ให้กว้าง มีวิธีตั้งค่า Visual Studio ให้กว้างหรือไม่?


33
คุณพบตัวเลือกในการกำหนดโครงการนี้ได้จากที่ใด
Marc

คำตอบ:


66

คุณต้องการให้ไฟล์บันทึกเป็น UTF-8 เนื่องจากคุณใช้อักขระพิเศษที่อาจสูญหายไปในการเข้ารหัส ASCII หรือไม่? หากเป็นเช่นนั้นแสดงว่ามีการตั้งค่าส่วนกลาง VS2008 ในTools > Options > Environment > Documentsชื่อSave documents as Unicode when data cannot be saved in codepage. เมื่อเปิดใช้งาน VS2008 จะบันทึกเป็น Unicode หากไม่สามารถแสดงอักขระบางตัวในหน้ารหัสเริ่มต้นเป็นอย่างอื่นได้

นอกจากนี้ไฟล์ใดบ้างที่ไม่ได้รับการบันทึกเป็น UTF-8 .cs, .csproj, .sln, .config, .as * x ฯลฯ ทั้งหมดของฉันทั้งหมดจะบันทึกเป็น UTF-8 (พร้อมลายเซ็นเครื่องหมายลำดับไบต์) โดยค่าเริ่มต้น


2
ขอบคุณสำหรับเคล็ดลับการตั้งค่า ฉันมีปัญหากับไฟล์ xaml ซึ่งทำให้เกิดข้อผิดพลาดระหว่างการรวบรวม
ท่อง

สวัสดีคุณรู้หรือไม่ว่าเหตุใด Report Designer จึงเปลี่ยนแอตทริบิวต์การเข้ารหัสเป็น utf-8 stackoverflow.com/questions/30071846/…
Mohammadreza

2
ยังไม่มีทางออกที่ดีกว่านี้หรือ VS2015 ของฉันทำการรีเซ็ตโค้ดหน้าทุกครั้งหลังจากเกิดความผิดพลาดทุกครั้งและด้วยไฟฟ้าของฉันสิ่งเหล่านี้เกิดขึ้นบ่อยครั้งน่าเศร้าที่ Microsoft มาถึงสิ่งนี้พวกเขาสามารถสร้าง IDE ที่ดีที่สุดได้อย่างไรและลืมการตั้งค่าหน้ารหัสเริ่มต้นช่างน่าเสียดาย ((
Movsar Bekaev

2
เมื่อคุณตั้งค่า Unicode จะใช้ UTF-8 หรือ UTF-16 จริงหรือ?
binki

9
ปัญหาคือข้อมูลอาจถูกบันทึกไว้ในหน้ารหัสเริ่มต้นของระบบ แต่ซอฟต์แวร์อื่นไม่สามารถอ่านแหล่งข้อมูลในหน้ารหัสระบบของฉันได้เสมอไป ดังนั้นฉันจึงหาวิธีบังคับ VS บันทึกไฟล์ข้อความทั้งหมดใน UTF-8 ตามค่าเริ่มต้น ฉันไม่รู้ว่าทำไมคนห่าถึงต้องการบันทึกข้อมูลข้อความในหน้ารหัสอื่นแล้วก็ UTF-8
BlackOverlord

20

อะไร

มันเป็นไปได้ด้วยEditorConfig

EditorConfig ช่วยให้นักพัฒนาสามารถกำหนดและรักษารูปแบบการเข้ารหัสที่สอดคล้องกันระหว่างบรรณาธิการและ IDE ต่างๆ

ซึ่งรวมถึงการเข้ารหัสไฟล์ด้วย

EditorConfig เป็น Visual Studio 2017 ในตัวตามค่าเริ่มต้นและฉันมีปลั๊กอินสำหรับเวอร์ชันเก่าถึง VS2012 อ่านข้อมูลเพิ่มเติมจากEditorConfig ภาพหน้าสตูดิโอปลั๊กอิน

อย่างไร

คุณสามารถตั้งค่าไฟล์การกำหนดค่า EditorConfig สูงพอในโครงสร้างโฟลเดอร์ของคุณเพื่อขยาย Repos ตั้งใจของคุณทั้งหมด (ถึงรากไดรฟ์ของคุณควรไฟล์ของคุณจะกระจายจริงๆทุกที่) และกำหนดค่าการตั้งค่าcharset :

charset : ตั้งค่าเป็น latin1, utf-8, utf-8-bom, utf-16be หรือ utf-16le เพื่อควบคุมชุดอักขระ

คุณสามารถเพิ่มตัวกรองและข้อยกเว้นอื่น ๆ ในทุกระดับโฟลเดอร์หรือตามชื่อไฟล์ / ประเภทหากคุณต้องการให้มีการควบคุมที่ละเอียดขึ้น

เมื่อกำหนดค่าแล้ว IDE ที่เข้ากันได้ควรทำโดยอัตโนมัติเพื่อให้ไฟล์ที่ตรงกันสอดคล้องกันเพื่อตั้งกฎ โปรดทราบว่า Visual Studio ไม่ได้แปลงไฟล์ทั้งหมดของคุณโดยอัตโนมัติ แต่จะทำบิตเมื่อคุณทำงานกับไฟล์ใน IDE (เปิดและบันทึก)

อะไรต่อไป

ในขณะที่คุณสามารถตั้งค่า Visual-studio-wide ได้ฉันขอแนะนำอย่างยิ่งให้รวมรูท EditorConfig ไว้ในการควบคุมเวอร์ชันโซลูชันของคุณเพื่อให้การตั้งค่าที่ชัดเจนจะถูกซิงค์โดยอัตโนมัติกับสมาชิกในทีมทั้งหมดด้วย ไฟล์ root editorconfig ของไดรฟ์อาจเป็นทางเลือกได้หากบางโปรเจ็กต์ยังไม่ได้ตั้งค่าไฟล์ editorconfig ของตัวเอง


5

ฉันทำงานกับ Windows7

แผงควบคุม - ภูมิภาคและภาษา - การดูแลระบบ - ภาษาสำหรับโปรแกรมที่ไม่ใช่ Unicode

หลังจากที่ฉันตั้งค่า "Change system locale" เป็นภาษาอังกฤษ (สหรัฐอเมริกา) การเข้ารหัสเริ่มต้นของฉันของ vs2010 เปลี่ยนเป็นWindows-1252. มันเป็นgb2312มาก่อน

ฉันสร้าง.cppไฟล์ใหม่สำหรับโปรเจ็กต์ C ++ หลังจากตรวจสอบไฟล์ใหม่เป็น TFS การเข้ารหัสจะแสดง Windows-1252 จากหน้าคุณสมบัติของไฟล์


ใน Windows 10 มีช่องทำเครื่องหมายหนึ่งช่องที่มีป้ายกำกับ "Beta: Use Unicode UTF-8 เพื่อรองรับภาษาทั่วโลก" เมื่อฉันตรวจสอบฉันสามารถเปิดไฟล์ที่เข้ารหัสด้วย Windows-1252 บน visual studio 2019 แต่ฉันพบการกำหนดค่านี้เพราะคำตอบนี้เท่านั้น ขอบคุณ!
Gean Ribeiro

1

ฉันไม่รู้เกี่ยวกับการตั้งค่าส่วนกลาง แต่คุณสามารถลองสิ่งนี้:

  1. บันทึกเทมเพลต Visual Studio ทั้งหมดใน UTF-8
  2. เขียน Visual Studio Macro / Addin ที่จะฟังเหตุการณ์ DocumentSaved และจะบันทึกไฟล์ในรูปแบบ UTF-8 (หากยังไม่มี)
  3. ใส่พร็อกซีในการควบคุมแหล่งที่มาของคุณซึ่งจะทำให้แน่ใจว่าไฟล์ใหม่เป็น UTF-8 เสมอ

2
3. อาจเป็นความคิดที่ไม่ดีเนื่องจากทันทีที่คุณเช็คอินไฟล์จะพบว่าไฟล์ของคุณไม่ตรงกับไฟล์ที่เช็คอิน อย่างน้อยก็ด้วยการโค่นล้ม หากสามารถเข้ารหัสได้ทั้งเช็คอินและเช็คอินก็ไม่เป็นปัญหา
TamusJRoyce

สวัสดีคุณรู้หรือไม่ว่าเหตุใด Report Designer จึงเปลี่ยนแอตทริบิวต์การเข้ารหัสเป็น utf-8 stackoverflow.com/questions/30071846/…
Mohammadreza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.