यूटीएफ -8 बिना बीओएम के


180

मेरे पास जावास्क्रिप्ट फाइलें हैं जिनकी मुझे यूटीएफ -8 (बीओएम के बिना) में सहेजने की आवश्यकता है, हर बार जब मैं उन्हें नोटपैड ++ में सही प्रारूप में परिवर्तित करता हूं , तो उन्हें विज़ुअल स्टूडियो में खोलने के बाद उन्हें बीओएम के साथ यूटीएफ -8 में वापस कर दिया जाता है। मैं VS2010 को ऐसा करने से कैसे रोक सकता हूं?

एक अन्य प्रश्न, क्या विज़ुअल स्टूडियो में बिना हस्ताक्षर के UTF-8 बिना BOM के UTF-8 के समान है?


13
साथ (बीओएम बिना utf-8) को बचाया एक फाइल करने के लिए (बीओएम साथ UTF-8) को वापस लाया गया है .. इस समस्या है
kabaros


काब्रोस समस्या का समाधान सरल है - बस बिना BOM के uft-8 का उपयोग करके दृश्य स्टूडियो के साथ फ़ाइल को सहेजें। हां, यह संभव है - जैसा कि केवॉन ने देखा "बिना हस्ताक्षर के UTF-8 सूची के बहुत नीचे है।" काफी अजीब है कि हस्ताक्षर के साथ utf-8 शुरुआत में है और बिना हस्ताक्षर के utf-8 लगभग अंत में है, लेकिन कम से कम यह इस निराशाजनक समस्या को हल करता है।
सायबरेल

जवाबों:


227

BOM या बाइट ऑर्डर मार्क कभी-कभी काफी कष्टप्रद होता है। विजुअल स्टूडियो फ़ाइल को तब तक नहीं बदलता जब तक कि आप उसे सहेज नहीं देते (जैसा कि हंस ने कहा)।

और यहां आपकी समस्या का समाधान है: यदि आप किसी फ़ाइल को अन्य एन्कोडिंग के साथ सहेजना चाहते हैं तो सहेजें को चुनें और फ़ाइल संवाद में सहेजें बटन का विस्तार करें और "एन्कोडिंग के साथ सहेजें" का चयन करें। या यदि आप इस सेटिंग से हमेशा के लिए छुटकारा चाहते हैं तो बस फ़ाइल मेनू खोलें और "एडवांस्ड सेव ऑप्शन" का चयन करें और वहां आपको "बिना हस्ताक्षर के UTF-8" का चयन करना चाहिए (और यह भी आपके आखिरी सवाल का जवाब है :)। हां "बिना हस्ताक्षर के UTF-8" BOM के बिना ही है।


11
मैं सोच रहा था कि क्या सभी फ़ाइलों के लिए डिफ़ॉल्ट रूप से इसे सक्षम करने का कोई विकल्प है।
मिहाई

3
जब मैंने "एन्कोडिंग के साथ सेव" चुना, तो उसने फाइल को ठीक से सेव कर लिया, लेकिन मुझे अपने फाइल मेन्यू में "एडवांस्ड सेव ऑप्शन" नहीं दिखे, फिर चाहे संपादक में मुझे किस तरह की फाइल मिली हो। हम्म ....
क्रिस जेनेस

20
@ChrisJaynes मेन्यू बार को खुले स्थान पर राइट-क्लिक करें, फिर कस्टमाइज़ करें ... कमांड ... (*) menubar: फ़ाइल ... [कमांड जोड़ें] ... "एडवांस्ड सेव ऑप्शन" में जोड़ें। यह "चयन सहेजें" के ठीक ऊपर है
ट्रैकर

4
खैर, मेरे पास "हस्ताक्षर के बिना UTF-8" प्रविष्टि नहीं है ... फिर क्या समस्या है?
मार्को क्लेन

14
नोट: बिना हस्ताक्षर के UTF-8 सूची के बहुत नीचे स्थित है।
केवॉन

29

अब तस्वीरों के साथ।

  1. File-> पर जाएं Save As

    फ़ाइल / इस रूप में सहेजें

  2. फिर Save बटन पर त्रिकोण पर क्लिक करें और क्लिक करें Save with Encoding...

    एन्कोडिंग के साथ सहेजें

  3. फ़ाइल को अधिलेखित करने के लिए ठीक क्लिक करें फिर एन्कोडिंग की सूची से खोजें UTF-8 Without signature-> क्लिक करें OK

    बिना हस्ताक्षर के UTF-8

आशा है कि यह आपको कुछ समय बचाता है।


26

मैंने Fix File Encoding एक्सटेंशन बनाया है जो Visual Studio 2010+ को BOM को UTF-8 फ़ाइलों में शामिल करने से रोकता है।


1
उस प्लगइन के लिए धन्यवाद! फ़ाइल मिलान प्रत्यय में एक नियमित अभिव्यक्ति का उपयोग करने से फ़ाइल प्रकार निर्दिष्ट करने का कोई अन्य तरीका होना चाहिए। इसके अलावा, प्लगइन केवल फाइलों पर काम करता है जब मैं उन्हें बचाता हूं, जब मैं एक जावास्क्रिप्ट बनाता हूं, तो शुरू में इसमें एक बीओएम (3 बाइट्स जोड़ा गया) होता है।
एंडर्स लिंडेन

6

दुर्भाग्य से यह csproj फ़ाइलों के साथ काम नहीं करता है। कोई "उन्नत बचत विकल्प" नहीं है और भले ही आपने इसे सीएसएस फ़ाइल के लिए "बिना हस्ताक्षर के" UTF-8 में सेट किया हो, लेकिन csproj फाइलें अभी भी BOM के साथ सहेजी जाती हैं। यदि आप वीएसएस का उपयोग करते हैं तो यह अभी भी परियोजना फाइलों के बारे में शिकायत करता है।


शायद आपको वीएसएस से एसवीएन में जाना चाहिए। मुझे याद है कि मैं एक ऐसा उपकरण देख रहा हूं जो आपके लिए रूपांतरण कर सकता है। SVN मुफ़्त है और एक छोटी सी कीमत के साथ आप अपने दृश्य स्टूडियो में विज़न SVN प्लगइन कर सकते हैं और SVN का उपयोग सीधे UI से कर सकते हैं।
डेव81

7
"शायद आपको वीएसएस से एसवीएन में जाना चाहिए।" सुझाव किस तरह का है? हम में से अधिकांश उद्यम सॉफ्टवेयर पर काम कर रहे हैं और हमारे सोर्स कंट्रोल सिस्टम को चुनने के लिए नहीं मिलते हैं। एसवीएन के पास ऐसे मुद्दे हैं जो जीआईटी के निर्माण के लिए प्रेरित थे, क्योंकि वे एसवीएन से तंग आ चुके थे।
शिव

4

UTF-8 - "इस रूप में सहेजें" (हस्ताक्षर के बिना) डिफ़ॉल्ट - हस्ताक्षर के बिना UTF के लिए डिफ़ॉल्ट को शामिल करने का अनुरोध

वीएस 2017 मूल रूप से EditorConfig का समर्थन करता है इसलिए एक अनुशंसित समाधान .editorconfigआपके कोड बेस और सेट में फ़ाइल जोड़ना है charset => utf-8। फिर एक बार जब आप किसी फाइल को सेव करते हैं तो वह बिना BOM के UTF-8 के रूप में सेव हो जाएगी।


मुझे डर है कि VS 2017 अभी भी charset.editorconfig github.com/editorconfig/editorconfig-visualstudio/issues/…
ब्लेज़फ्रॉग

2

Vs2010 c ++ के लिए, बिना BOM के UTF8 के साथ समस्याएँ होंगी, जब स्रोत फ़ाइलों में मल्टी-बाइट वर्ण होते हैं (जैसे। चीनी)।

उन पात्रों को BOM के बिना सही ढंग से पहचाना नहीं जाएगा, और परिणामस्वरूप असफल संकलन होगा।


क्योंकि विंडोज पर बिना BOM के फाइल को ANSI एन्कोडिंग माना जाएगा, इसलिए इसे तोड़ा जाएगा
phuclv

2

हाल ही में मुझे यह छोटी कमांड-लाइन टूल मिली, जो मनमाने ढंग से UTF-8 एनकोडेड फाइलों पर BOM को जोड़ती या हटाती है: UTF BOM Utils ( नया लिंक) github पर )

थोड़ा दोष, आप केवल सादे C ++ स्रोत कोड डाउनलोड कर सकते हैं। आपको मेकफाइल ( सीएमके के साथ , उदाहरण के लिए) बनाना होगा और इसे खुद से संकलित करना होगा, इस पृष्ठ पर बायनेरिज़ प्रदान नहीं किए गए हैं। हालाँकि, सॉफ़्टवेयर डेवलपर के लिए यह कोई समस्या नहीं होनी चाहिए।


1

डेव81 के समाधान के साथ भी, विजुअल स्टूडियो 2015 कम्युनिटी अभी भी मेरी फ़ाइल को हर उस समय UTF8-BOM में बदल रही थी, जब मैं उस HTML फ़ाइल को सहेजता था।

जब मैंने वह html फ़ाइल बनाई, तो मैंने प्रोजेक्ट पर राइट-क्लिक किया और "Add" को चुना और फिर एक HTML फ़ाइल जोड़ी।

डिफ़ॉल्ट रूप से, विज़ुअल स्टूडियो में ए शामिल होगा <meta charset="utf-8" /> आपकी HTML फ़ाइल टैग ।

बस टैग को हटाने के बाद डेव81 के समाधान को लागू करने से इस बार समस्या दूर हो जाएगी।

ऐसा लगता है कि विज़ुअल स्टूडियो आपकी html फ़ाइल को पार्स कर रहा है और जब वह उस टैग को देखता है तो वह फ़ाइल को UTF8-BOM में कनवर्ट करता है बिना किसी मूल फ़ाइल फॉर्मेट (UTF-8 बिना BOM) के।

मैं डेव81 के समाधान के तहत सीधे एक टिप्पणी करता, लेकिन मेरे पास ऐसा करने के लिए पर्याप्त बिंदु नहीं थे ...


0

के लिए दृश्य स्टूडियो कोड निम्न कार्य करें:

  1. नीचे से दाईं ओर, वर्तमान एन्कोडिंग का चयन करें यहां छवि विवरण दर्ज करें
  2. विकल्पों में से, एनकाउंटिंग के साथ सेव का चयन करें यहां छवि विवरण दर्ज करें
  3. विकल्पों में से, UTF-8 का चयन करें यहां छवि विवरण दर्ज करें

VS और VS कोड बहुत अलग हैं। यह प्रश्न वीएस
फुल्विक

हालांकि सवाल वी.एस. के लिए था और आप VScode जो हल मेरी समस्या इसलिए यह upvoting के लिए जवाब
आशु

-2
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

यह कोड बिना BOM के UTF-8 में फ़ाइल बनाएगा


आईडीई में स्रोत कोड फ़ाइल को सहेजते समय एन्कोडिंग के बारे में है, सी # कोड में कुछ फ़ाइल लिखते समय एन्कोडिंग सेट करने के बारे में नहीं
2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.