क्या एन्कोडिंग काम करने के लिए Å Å Å पाने के लिए


12

मैं VB.net में एक छोटा सा एप्लिकेशन लिख रहा हूं, जो मुझे कंट्रोल पैनल पर जाने के बजाय पासवर्ड के साथ एक उपयोगकर्ता "विंडोज 7 अकाउंट" बनाने में आसानी से सक्षम करेगा। समस्या यह है कि जब मैं UTB-8 एन्कोडिंग का उपयोग करके VB.net में एक बैट फ़ाइल बनाता हूँ, तो ऐसा नहीं लगता कि यह होना चाहिए। मैंने सभी एन्कोडिंग की कोशिश की है जो मुझे मिल सकते हैं, लेकिन इसे काम करने में असमर्थ हैं।

अगर किसी को इस बात का अंदाजा है कि मुझे यह क्यों मिल रहा है तो कृपया मुझे बताएं। अग्रिम में Thanx!


stackoverflow.com पर पोस्ट करने का प्रयास करें और अपनी स्क्रिप्ट दिखाएं।
टोबी एलेन

1
@ टॉबी एलन वैसे तो यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है, लेकिन एन्कोडिंग टेक्स्ट के बारे में एक प्रश्न है, वही समस्या तब होती है जब मैं एक .bat फ़ाइल को "सामान्य" तरीके से बनाता हूं।
kagstrom2100

जवाबों:


12

संपादित करें: मैं गलत था;)
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 में कोड नहीं कर सकते?

cmd.exe


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

नमस्ते और उत्तर के लिए धन्यवाद। अपने vb.net एप्लिकेशन में मैं कमांड के साथ एक .bat फ़ाइल बनाने का प्रयास कर रहा हूं: नेट उपयोगकर्ता "उपयोगकर्ता नाम" नेट लोकलग्रुप एडमिनिस्ट्रेटर "टाइप" / ऐड करें कारण मुझे व्यवस्थापक के बजाय स्वीडिश शब्द एडमिनस्ट्रेटर का उपयोग करना है। 'अंग्रेजी अनुवाद को एक समूह के रूप में नहीं लें।
kagstrom2100

बस सोचा था कि एक .bat फ़ाइल के माध्यम से जा रहा है जब आप VB.net से सीधे ऐसा कर सकते थे। यहाँ की तरह । Google में बहुत सारे उदाहरण भी। इसलिए मध्य-पुरुष के रूप में .bat बनाने की कोई आवश्यकता नहीं है। और उन उदाहरणों से आप यूनिकोड-नाम को सीधे विंडोज-फंक्शन में फीड कर सकते हैं। (जब तक आपको किसी कारण से अपने VB.net ऐप से अलग समय पर .bat चलाने की आवश्यकता नहीं है?)
Rik

वैसे मैं Google पर VB.net में ऐसा करने के लिए दिनों से तलाश कर रहा हूं, हालांकि मुझे ऐसा करने का कोई तरीका नहीं मिला है। मैंने पहले ही आपके द्वारा लिंक किए गए उदाहरण की कोशिश की और यह काम नहीं कर पाया। मैं यह कैसे सुनिश्चित करूँ कि .bat फ़ाइल BOM का उपयोग न करे? इसके अलावा Lucida कंसोल क्या है? एकमात्र जानकारी जो मुझे इसके बारे में मिली, वह यह है कि यह एक फ़ॉन्ट है। जब मैं आपके द्वारा दूसरे उदाहरण / चित्र में की गई सटीक चीज़ को आज़माता
kagstrom2100

मैंने अपने उत्तर को शामिल करने Lucida Consoleऔर फ़ाइल-निर्माण के बिना जोड़ा BOM(नीचे # संपादित करें)। लेकिन क्या net userकमांड-प्रॉम्प्ट पर काम के माध्यम से इस उपयोगकर्ता का निर्माण होता है ? और यदि आप इसे VB.net के माध्यम से बनाते हैं तो क्या काम नहीं करता है? इसके लिए हमें कुछ उदाहरण-कोड (या एक अलग प्रश्न) की आवश्यकता होगी क्योंकि यह काम करना चाहिए। (BTW आपने मेरी छवि को जोड़ा, आपका नहीं, मुझे लगता है, आपकी टिप्पणी में)
रिक्

2
@ जॉनल्वन हाँ, आप सही कह रहे हैं। स्पष्ट रूप से findUTF-8 इनपुट को बहुत अच्छी तरह से हैंडल नहीं करता है। लेकिन आप उपयोग कर सकते हैं findstr। इस तरह:ping 127.0.0.1 -n 2 | findstr /C:" = "
Rik

2

मेरे लिए यह तय करने वाली बात यह थी कि फ़ाइल को बिना BOM के UTF-8 के रूप में सहेजा जाए और इस कोड का उपयोग किया जाए

@echo off
chcp 65001
net user Linus /add
net localgroup Administratörer Test/add

बात मैं पहले का उपयोग नहीं किया था @echo बंद इतना है कि और chcp 65001 का उपयोग कर यह क्या तय है! सभी मदद के लिए धन्यवाद

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