Cmd.exe में UTF-16 फ़ाइल आउटपुट


1
chcp 10000
echo hell☺ w☻rld♥! >> "UTF-16 file☺☻♥♦♣♠"

ठीक है, यह सही फ़ाइल बनाता है, लेकिन सामग्री में यूनिकोड वर्णों के बजाय प्रश्न चिह्न हैं। इसे कैसे जोड़ेंगे?

जवाबों:


1

आपका कोड सही नहीं है, क्योंकि 10000 यूनिकोड कोड पेज नहीं है। कोड पृष्ठ पहचानकर्ता देखें ।

10000   macintosh   MAC Roman; Western European (Mac)
...
1200    utf-16      Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
1201    unicodeFFFE Unicode UTF-16, big endian byte order; available only to managed applications
...
12000   utf-32      Unicode UTF-32, little endian byte order; available only to managed applications
12001   utf-32BE    Unicode UTF-32, big endian byte order; available only to managed applications
...
65000   utf-7       Unicode (UTF-7)
65001   utf-8       Unicode (UTF-8)

मुझे यकीन नहीं है कि क्यों, लेकिन कमांड प्रॉम्प्ट उन्हें पेस्ट किए जाने पर नियंत्रण पात्रों के रूप में व्याख्या करने लगता है, विशेष रूप से एसओएच (हेडिंग की शुरुआत, 01), एसटीएक्स (टेक्स्ट की शुरुआत, 02) और ईटीएक्स (टेक्स्ट का अंत, 03)।

प्लस साइड में, PowerShell इसे ठीक से संभालता है। नोटपैड ++ ने परिणामी पाठ फ़ाइल को स्वचालित रूप से "यूसीएस -2 लिटिल एंडियन" के रूप में खोला, और यह सही वर्ण प्रदर्शित करता है।


ठीक है, मुझे पता चल गया है कि UTF-8 मेरे लिए काम क्यों नहीं कर रहा था। फ़ॉन्ट को ल्यूसिडा कंसोल पर सेट किया जाना चाहिए, क्योंकि डिफ़ॉल्ट रैस्टर फ़ॉन्ट्स में यूनिकोड का समर्थन नहीं है।


1
chcp 1200: कंसोल कहता है: "अमान्य कोड पृष्ठ", साथ ही साथ chcp 1201 के साथ गधा। क्यों?
0x6B6F77616C74

1
@kutacz available only to managed applications। उचित यूनिकोड समर्थन के लिए पावरशेल का उपयोग करें, क्योंकि 65001इस मामले के लिए कमांड प्रॉम्प्ट में UTF-8 विकल्प ( ) काम नहीं करता है।
बॉब

UTF-8 के मामले में (65001 chcp के बाद) यह ठीक काम करता है ...
0x6B6F77616C74

@kutacz, तब, UTF-8 का उपयोग करें। यह मेरे लिए काम नहीं कर रहा था, लेकिन मुझे अभी भी यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं। UTF-16 मानक कमांड प्रॉम्प्ट में संभव नहीं है। प्रबंधित एप्लिकेशन शायद .NET फ्रेमवर्क को संदर्भित करते हैं। PowerShell .NET फ्रेमवर्क पर चलता है, इसलिए यह UTF-16 के लिए काम करता है।
बॉब

0

दोनों 65001.txtऔर 1200.txtएक ही स्ट्रिंग होते हैं: абв™लेकिन विभिन्न एन्कोडिंग में। आदेश:

chcp 65001 & type 65001.txt 

सफलतापूर्वक कोडपेज बदलता है, लेकिन कचरा प्रदर्शित करता है।

आदेश:

type 1200.txt

सही अक्षर प्रदर्शित करता है, लेकिन कमांड

for /f %A in ('type 1200.txt') do echo %A

प्रदर्शित करता है абвT

इसलिए cmd.exe कोडपेज 1200 (कुछ सीमाओं के साथ) के साथ काम करने में सक्षम है, जबकि मुझे कोडपेज 65001 के साथ कोई संतोषजनक परिणाम नहीं मिल सकता है।

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