संपादित करें: मैं गलत था;)
cmd.exe
को स्वीकार करता है UTF-8 लेकिन आप इसे बचाने के लिए सुनिश्चित करने की आवश्यकता है बिनाBOM
फ़ाइल की शुरुआत में।
यहाँ एक दूसरी परीक्षा है। आप chcp 65001
अपने बैच-फ़ाइल की शुरुआत में उपयोग कर सकते हैं ।
एक बैच फ़ाइल प्रकार UTF-8 की नहीं हो सकती। इसे ASCII होना चाहिए। Cmd.exe
बस एक और प्रारूप स्वीकार नहीं करता है। मैंने एक छोटा परीक्षण किया और आप अपने पात्रों का उपयोग कर सकते हैं लेकिन इसके लिए कुछ काम करने की आवश्यकता है।
के test.bat
साथ एक फ़ाइल बनाएँ echo Å Ä Ö
। इसे प्रारूप के साथ सहेजें ANSI/ASCII
। एक खोलें cmd.exe
और सुनिश्चित करें कि आपके cmd.exe
उपयोग Lucida Console
(यूनिकोड वर्ण प्रदर्शित करने के लिए)।
जब आप फ़ाइल टाइप करते हैं तो यह वर्णों को पुराने DOS अक्षर के रूप में दिखाएगा। आप यहाँ एक अनुवाद चार्ट देख सकते हैं ।
जब आप "Windows Ansi" पर जाते हैं - वर्णों के साथ कोड पृष्ठ (अर्थात पश्चिम यूरोपीय लैटिन) को chcp 1252
सही ढंग से प्रदर्शित किया जाता है। यदि वे भी अपनी संबंधित उपयोगिताओं में स्थानांतरित हो जाते हैं, तो उस उपयोगिता पर निर्भर करता है।
लेकिन आप इसके लिए बैच-फाइल क्यों बना रहे हैं? क्या आप इसे VB.net में कोड नहीं कर सकते?
2 # संपादित करें:
इस प्रकार आप इसमें सेट होते Lucida Console
हैं cmd.exe
:
BOM
एक UTF-8 फ़ाइल की शुरुआत में 3 अक्षरों है। ( \xEF\xBB\xBF
)।
VB.net में आप एक फ़ाइल बना सकेगी बिना एक BOM
इस तरह:
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
'^^^^^'
Using sink As New StreamWriter("Foobar.txt", False, utf8WithoutBom)
sink.WriteLine("...")
End Using