मेरा उत्तर हैलोसम के एक पर आधारित है जिसमें सभी आवश्यक जानकारी शामिल है। केवल मुझे विश्वास है कि ओपी क्या मांग रहा है यह सुनिश्चित करने के लिए कि बीओएम फ़ाइल में उत्सर्जित हो।
तो यूटीएफ 8 एन्कोडिंग सीटीआर को झूठ बोलने की बजाय आपको सच होने की आवश्यकता है।
using (var sw = new StreamWriter("text.txt", new UTF8Encoding(true)))
नीचे कोड की कोशिश करो, एक हेक्स संपादक में जिसके परिणामस्वरूप फ़ाइलों को खोलने और देखो, जो एक बीओएम होता है और जो नहीं करता है।
class Program
{
static void Main(string[] args)
{
const string nobomtxt = "nobom.txt";
File.Delete(nobomtxt);
using (Stream stream = File.OpenWrite(nobomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(false)))
{
writer.WriteLine("HelloПривет");
}
const string bomtxt = "bom.txt";
File.Delete(bomtxt);
using (Stream stream = File.OpenWrite(bomtxt))
using (var writer = new StreamWriter(stream, new UTF8Encoding(true)))
{
writer.WriteLine("HelloПривет");
}
}
ध्यान दें कि, जबकि तकनीकी रूप से UTF-8 में अनुमति दी है, एक बीओएम न की आवश्यकता है या यूनिकोड द्वारा सिफारिश की है ([रेफरी] को देखने के (http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf))। एक बात के लिए, यह बेकार है (कहने के लिए, यूटीएफ -16 के विपरीत) - यूटीएफ -8 बाइट ऑर्डर मानक द्वारा निर्दिष्ट किया गया है। दूसरे के लिए, यह पाठ प्रसंस्करण को खराब कर सकता है। उदाहरण के लिए, एक्सएमएल प्रोलॉग से पहले कोई अक्षर होने पर कई एक्सएमएल पार्सर्स चकित होंगे। –
क्या आप वाकई सुनिश्चित हैं कि आप यूटीएफ 8 निर्दिष्ट कर रहे हैं? क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह अभी भी एक यूटीएफ 8 लिखेगा, लेकिन यूनिकोड मानक 5.0 से बीओएम – xanatos
के बिना * यूनिकोड मानक भी को प्रारंभिक बाइट ऑर्डर मार्क (बीओएम) का उपयोग स्पष्ट रूप से बड़े- यूनिकोड एन्कोडिंग योजनाओं में से कुछ में एंडियन या थोड़ा एंडियन डेटा। * –