द्वारा पढ़ा जाने के लिए स्वीकार नहीं किया गया है कृपया मुझे पहले यह बताएं कि यह समस्या सीधे पर्दे हीरा ऑपरेटर से संबंधित है जो सीधे कीबोर्ड पर टाइप की गई इनपुट स्वीकार कर रही है।उमलॉट चरित्र को कीबोर्ड (कोडपेज 65001, यूटीएफ -8) के माध्यम से पर्ल स्क्रिप्ट
क्या मैंने पर्ल हीरा ऑपरेटर के बारे में बात की थी कि इनपुट को स्वीकार कर लिया गया है कि फ़ाइल से पाठ से पाइप किया गया है या नहीं, तो हाँ, यह प्रश्न 51 9 30 9 - How do I read Utf-8 with diamond operator का डुप्लिकेट होगा।
हालांकि, यह पाइप या फ़ाइल डेटा के बारे में नहीं है, बल्कि इनपुट के बारे में है जो सीधे कीबोर्ड पर टाइप किया गया है। इसलिए, मैं तर्क है, इस सवाल का नहीं 519309.
का डुप्लिकेट है यहाँ मेरे सवाल का विवरण हैं:
मैं यूमलॉट वर्णों ('ए' का उपयोग करने की कोशिश कर रहा हूँ, 'O', 'यू', ...) मेरे कीबोर्ड पर।
मैं एक बहुत ही सरल पर्ल स्क्रिप्ट जो कीबोर्ड से एक लाइन तुरंत स्वीकार करता है और उसके बाद स्क्रीन पर फिर से इसे बाहर प्रिंट है:
अगर मैं कोड पृष्ठ पर 1252 के साथ यूमलॉट वर्णों का उपयोग करें, तो सब कुछ उम्मीद के रूप में काम करता है:
C:\>chcp 1252 & perl -CS -we"print '*** '; $txt = <>; print '--- ', $txt;"
Page de codes active : 1252
*** ü
--- ü
हालांकि, अगर मैं कोड पृष्ठ पर 65001 के साथ एक ही यूमलॉट वर्णों का उपयोग करें (UTF-8), तो मैं एक चेतावनी अप्रारंभीकृत मूल्य मिलता है और ऊमलायूट स्वीकार नहीं किया है:
C:\>chcp 65001 & perl -CS -we"print '*** '; $txt = <>; print '--- ', $txt;"
Page de codes active : 65001
*** ü
Use of uninitialized value $txt in print at -e line 1.
---
अगर मैं पाइप मेरी पर्ल कार्यक्रम में ऊमलायूट, तो मैं कोई समस्या नहीं है:
C:\>chcp 65001 & echo ü | perl -CS -we"print '*** '; $txt = <>; print '--- ', $txt;"
Page de codes active : 65001
*** --- ü
मैं के साथ यह चेतावनी क्यों मिलता है कोडपेज 65001 (UTF-8)?
मैं स्ट्रॉबेरी पर्ल 5.22 के साथ विंडोज 7 x64 का उपयोग कर रहा हूं।
सिर्फ रिकॉर्ड के लिए, यदि मैं शुद्ध बैच कमांड का उपयोग करता हूं (जो कि मैं पर्ल का उपयोग नहीं करता), तो मैं कोडपृष्ठ 65001 (यूटीएफ -8) के साथ उमलॉट वर्णों में सफलतापूर्वक कुंजी कर सकता हूं।
C:\>chcp 65001 & set /p txt=*** & echo --- %txt%
Page de codes active : 65001
*** ü
--- ü
सवाल वास्तव में है: ठीक एक शुद्ध डॉस बैच आदेश के रूप में क्यों पर्ल नहीं कोडपेज 65001 के साथ कुंजीपटल द्वारा यूमलॉट वर्णों स्वीकार करने में सक्षम, एक ही कोड पृष्ठ पर 65001 है, जबकि उसी कुंजीपटल इनपुट,, काम करता है?
पाइपिंग उमलॉट पात्रों और कीबोर्ड से सीधे उमलॉट वर्ण टाइप करने के बीच कुछ मूल रूप से भिन्न लगता है।
कुंजीपटल पर एक उमलॉट चरित्र टाइप क्यों नहीं कर रहा है, जबकि एक ही चीज एक पाइप वाले चरित्र के रूप में पूरी तरह से ठीक काम करती है?
क्या आपने विकल्प '-CS'' का प्रयास किया है? ('perl -CS -we') एसटीडीआईएन और एसटीडीओयूटी यूटीएफ -8 एन्कोडिंग –
बनाने के लिए मैंने perl -CS -we की कोशिश की है - यह STDOUT को प्रिंट करने के लिए बिल्कुल सही काम करता है, लेकिन किसी कारण से, इसका STDIN पर कोई प्रभाव नहीं पड़ता (यह कहना है: मेरे पास अभी भी वही समस्या है - अनियमित मूल्य) – user2288349
'सीएचसीपी 65001' सीएमडी में यूटीएफ -8 समर्थन flimsy है जब बाहरी अनुप्रयोगों जैसे 'perl' के साथ प्रयोग किया जाता है। यही वह जगह है जहां ConEmu जैसे रैपर आसान आते हैं। – wOxxOm