ऑक्टल अनुक्रमों को utf-8 पाठ में कैसे बदलें


9

जब मैं विंडोज से गैर-एससीआई पाठ की नकल करता हूं और एमएसीएस में पेस्ट करता हूं, तो यह एक अष्टक अनुक्रम के रूप में दिखाई देता है। उदाहरण के लिए, यदि मैं Emacs में ä पेस्ट करता हूं तो यह \ 344 के रूप में दिखाई देता है।

मैं Emacs में वापस पाने के लिए Cq 344 टाइप कर सकता हूं। यह कष्टप्रद है, लेकिन यह सहन करने योग्य है यदि केवल एक चरित्र है। लेकिन अगर बहुत से चरित्र अष्ट भागने के क्रम में बदल जाते हैं, तो हर चीज को अंदर बदलने के लिए एक क्षेत्र पर कुछ कमांड चलाना सुविधाजनक होगा। क्या पहले से ही ऐसी कोई आज्ञा है? यदि नहीं, तो आप इसे करने के लिए एक फ़ंक्शन कैसे लिखेंगे?

[मैंने अपने .emacs फ़ाइल में utf-8 के लिए अपना डिफ़ॉल्ट कोडिंग सिस्टम सेट किया है, और मैं विंडोज और लिनक्स पर एक ही .emacs फ़ाइल का उपयोग करता हूं। लेकिन समस्या केवल तब होती है जब एक विंडोज एप्लिकेशन से Emacs में कॉपी किया जाता है। Emacs से दूसरे विंडोज एप्लिकेशन पर कॉपी करना ठीक काम करता है।]


1
मुझे लगता है कि आप जो चाहते हैं revert-buffer-with-coding-system(देखें यह प्रलेखन है)। Emacs इस तरह से पात्रों को दिखाता है क्योंकि आपने उन्हें एक ऐसे वातावरण से कॉपी किया था जो अलग-अलग कोडिंग प्रणाली में था (एएनएसआई को तथाकथित उच्च ASCII वर्णों को लैटिन को डायक्रिटिक्स के साथ प्रस्तुत करने के लिए इस्तेमाल किया गया था), लेकिन आपका बफर UTF-8 (जैसे के लिए) का उपयोग करना चाहिए उच्च बिट सेट वाले ASCII वर्णों का कोई अर्थ नहीं है, अर्थात अमान्य हैं)।
wvxvw

1
या, शायद भी set-clipboard-coding-systemC-h a coding-systemयह देखने की कोशिश करें कि इस समूह में और कौन से कार्य उपलब्ध हैं।
wvxvw

आपके द्वारा देखा गया \ 344 कॉन्फ़िगरेशन समस्या का परिणाम है। इस तथ्य के बाद इसे "ठीक" करने की कमान के बजाय, आपको जांच करनी चाहिए कि आप इसे पहली जगह में क्यों प्राप्त करते हैं। उदाहरण के साथ शुरू करें emacs -Qऔर यदि आपको समस्या पहले से ही दिख रही है, तो M-x report-emacs-bug
स्टीफन

@Stefan कभी-कभी, "आप इसे क्यों प्राप्त करते हैं" स्पष्ट है, लेकिन यह तथ्य के बाद आपको इसे ठीक करने में मदद नहीं करेगा। उदाहरण के लिए, मेरे पास सिर्फ यह मुद्दा था insert-file-literally(और यह पूर्ववत या फ़ाइल को हटाने / हटाने के लिए बहुत देर हो चुकी थी)।
टी। वेरॉन

@Stefan Emacs के बाहर इतनी गलतफहमियाँ हो सकती हैं, जो इसका कारण बन सकती हैं, कुछ का नाम लेने के लिए: किसी ने BOM को एक फ़ाइल में सहेजा, जो मूल रूप से कुछ cp-12XX सिंगल बाइट एन्कोडिंग में थी, जो उस स्रोत को भ्रमित करती थी जहाँ से पाठ कॉपी किया गया था, स्रोत संपादक ने क्लिपबोर्ड आदि में सामग्री के प्रकार को गलत तरीके से रिपोर्ट किया था। मैं कुछ प्राचीन एएसपी स्रोतों को संपादित करते समय इसे बहुत देखता था जो मूल रूप से गलत तरीके से एन्कोड किए गए थे।
wvxvw

जवाबों:


4

यह मेरी .emacs फ़ाइल का आपत्तिजनक भाग निकला है (set-selection-coding-system 'utf-8)। एक बार जब मैंने उस लाइन को हटा दिया, तो Emacs ने अपेक्षा के अनुरूप व्यवहार किया।


2

एक बार यह बनाया:

(defun umlaute ()
  "Fix wrongly inserted characters, commonly from pasting. "
  (interactive "*")
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\344\\|"(list 228)) nil 1)
      (replace-match "ä"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\304\\|"(list 196)) nil t 1)
      (replace-match "Ä"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\366\\|"(list 246)) nil t 1)
      (replace-match "ö"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\326\\|"(list 214)) nil t 1)
      (replace-match "Ö"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\374\\|"(list 252)) nil t 1)
      (replace-match "ü"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\334\\|"(list 220)) nil t 1)
      (replace-match "Ü"))
    (goto-char (point-min))
    (while (re-search-forward (concat "\\\337\\|"(list 223)) nil t 1)
      (replace-match "ß"))
    (goto-char (point-min))
    (while (re-search-forward "\\\201" nil t 1)
      (replace-match ""))))

https://iscunchpad.net/sx-emacs-werkstatt पर misc-utils.el से

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