मैंने हाल ही में एक मित्र को समझाने की कोशिश की कि एक साधारण एक-पंक्ति बैच फ़ाइल कैसे बनाई जाए:
subst t: "X:\Example"
मेरी मशीन पर जो सालों से ठीक काम कर रही है, लेकिन उनके कहने पर मैं एक मुद्दे में भाग गया: उनके नाम में गैर-एएससीआईआई अक्षर (तुर्की अक्षर ı और ç सटीक होना) शामिल थे जिन्हें ठीक से पहचाना नहीं गया था।
इसका सरल उपाय यह है कि मैं जोड़ना चाहूंगा
chcp 65001
फ़ाइल के शीर्ष पर सक्रिय कोडपृष्ठ को UTF-8 एक में बदलने के लिए।
लेकिन यह काम नहीं किया। उनके कंप्यूटर पर यह कमांड शेल के क्रैश का कारण बना जो इसे निष्पादित कर रहा था। मैंने उन्हें कुछ अलग मूल्यों की कोशिश की; 65000 दुर्घटनाग्रस्त हो गए, लेकिन 10000 नहीं थे और नीचे के सभी मूल्य जो मैंने कोशिश की, साथ ही साथ काम किया, लेकिन मेरे कंप्यूटर पर समान मूल्यों के समान कोड पृष्ठों के अनुरूप नहीं थे। उनका डिफ़ॉल्ट कोड पेज अलग-अलग था (मेरे कंप्यूटर पर 850 के बजाय 857। यह समझ में आता है, एमएसडीएन के अनुसार, 857 एक तुर्की कोड पेज और 850 एक पश्चिमी यूरोपीय एक है)।
मुझे पता है कि कुछ कोड पेज कंप्यूटर से कंप्यूटर में बदल सकते हैं, लेकिन MSDN पेज स्पष्ट रूप से बताता है कि एक को UTF-8 का उपयोग करना चाहिए क्योंकि अन्य पेज बदल सकते हैं (बिल्कुल यह कि वे कब और कैसे बदलते हैं, इसके बारे में दस्तावेज़ीकरण की एक व्यथित कमी है)
क्या यह गलत है? क्या 65001 का मान भी बदल सकता है? यदि हां, तो इससे दुर्घटना क्यों होगी? क्या इसे "अमान्य कोड पृष्ठ" के बारे में शिकायत नहीं करनी चाहिए? और अगर यह बदलता है, तो कोई यह कैसे पता लगा सकता है कि इसे प्राप्त करने के लिए किस मूल्य का उपयोग करना है या मुझे गैर-एएसआईआईआई पात्रों को स्वीकार करने के लिए और कैसे मिल सकता है?
मैं अंग्रेजी भाषा के साथ विंडोज़ 10 का उपयोग कर रहा हूं (यह विंडोज़ 8.1 इतालवी के साथ पूर्वस्थापित किया गया था), जबकि मेरा दोस्त विंडोज़ 7 तुर्की का उपयोग करता है।
at the top of the file
क्या आपने बैच फ़ाइल को UTF-8 एन्कोडिंग के साथ सहेजा है?