ইমেলগুলি এক্সএমএল ফাইলগুলি থেকে বিওএম সরিয়ে না ফেলুন Make


8

আমি একটি এক্সএমএল ফাইল সম্পাদনা করতে ইম্যাক্স ব্যবহার করি যা অন্য অ্যাপ্লিকেশন দ্বারা পড়া হয়। অন্যান্য অ্যাপ্লিকেশনটির জন্য ফাইলটি বাইট-অর্ডার চিহ্নিতকারী (বিওএম) দিয়ে শুরু হওয়া দরকার। যাইহোক, ইমাকস মনে হচ্ছে আমি যখনই ফাইলটি সম্পাদনা করি তখনই বিওএম সরিয়ে ফেলবে। ইমাকস বিওএমকে একা রেখে যাওয়ার উপায় আছে কি?


এই কারণেই যখন আমি স্কটাস্কসের জন্য একটি এক্সএমএল ফাইল সম্পাদনা করি, তখন এটি ইউনিকোড থেকে ইউনিকোড বড় এন্ডিয়ানতে এনকোডিং পরিবর্তন করে এবং তারপরে কাজ করে না?
js2010

উত্তর:


9

ইমাকস একটি বিওএম লিখবে বা এটি কোন কোডিং সিস্টেমটি ব্যবহার করছে তার উপর নির্ভর করে। ইমাকস কোনও ফাইল দেখার সময় স্বয়ংক্রিয়ভাবে কোডিং সিস্টেমটি বেছে নেয়।

আপনি কোডিং সিস্টেমটিকে স্বাক্ষর দিয়ে utf-8-8 এ পরিবর্তন করতে পারেন, যা ইমাক্সকে বিওএম লিখতে বলবে।

একটি পরিদর্শন করা ফাইলের কোডিং সিস্টেমটি পরিবর্তন করতে:

C-x RET r utf-8-with-signature RET

ইমাকস কোনও ফাইলের ভেরিয়েবল সেট করে কোনও নির্দিষ্ট ফাইলের জন্য ব্যবহৃত কোডিং সিস্টেমটি সেট করতে পারেন । এটি করতে শিখতে ফাইলগুলিতে সূক্ষ্ম ম্যানুয়াল বিভাগ 57.3.4 স্থানীয় ভেরিয়েবলগুলি দেখুন


আশ্চর্যজনক, আমি ঠিক যে ধরনের উত্তরটির জন্য আশা করছিলাম! ধন্যবাদ!
Vebjorn Ljosa

5

রিচার্ড হোসকিন্সের জবাব অনুসরণ করুন: আপনি যদি না চান যে বিওএমটি ইম্যাক্স দ্বারা গোপন করা হয় তবে আপনি এই স্নিপেটের সাথে * - স্বাক্ষর কোডিং অক্ষম করতে পারবেন:

(setq auto-coding-regexp-alist
  (delete (rassoc 'utf-16be-with-signature auto-coding-regexp-alist)
  (delete (rassoc 'utf-16le-with-signature auto-coding-regexp-alist)
  (delete (rassoc 'utf-8-with-signature auto-coding-regexp-alist)
          auto-coding-regexp-alist))))

বিওএমটি ইউ + এফএফএফ, "শূন্য প্রস্থের অবিচ্ছেদী স্থান", এবং আমার ইমাসে ২৩.১.১ এর বাক্স হিসাবে প্রদর্শিত হবে না, পরিবর্তে ফাইলের শীর্ষ লাইনটি কিছুটা নিচে সরানো হয়েছে এবং কখনও কখনও একটি বাক্সও রয়েছে box প্রথম লাইনের চারপাশে উপস্থিত হবে — তবে আপনি দেখতে পাবেন যে বিওএম আছে, এবং প্রয়োজনে এটি মুছুন।


1

ইমাকস "নিজেই" বিওএম এর সাথে জটলা উচিত নয়; যদি এটি সত্যিই এটি করে চলেছে, তবে এটি ইমাসস "মোড" প্রয়োগকারী কোড হতে হবে যা আপনি আপনার এক্সএমএল ফাইলগুলি সম্পাদনা করতে ব্যবহার করছেন যা বিওএম সরিয়ে দেয়। যেহেতু আপনি এটি কোনওটি বলছেন না, আমি আপনাকে কেবল সেই মোডের জন্য ডকুমেন্টেশনের কাছে উল্লেখ করতে পারি, বা আপনি ফাইলগুলি fundamental-mode(বা অনুরূপ অ-ধ্বংসাত্মক মোড) এ খোলেন । বা M-x find-file-literallyঅন্য সব ব্যর্থ হলে চেষ্টা করুন ।


এক্সএমএল-মোড ব্যবহার করুন (অর্থাত্, এসজিএমএল-মোড), তবে সেই সমস্যাটি অন্য কোথাও রয়েছে বলে মনে হচ্ছে: আমি যদি ফাইলটি খুলি find-file-literallyএবং তারপর করি M-x sgml-mode, তবে বিওএম সরানো হবে না। আক্ষরিক অর্থে কোনও ফাইল দেখার সময় বিশেষ অক্ষরগুলি ইউটিএফ-8-এনকোডযুক্ত না থাকায়, অন্তর্নিহিত ফর্ম্যাট রূপান্তর এবং অক্ষর কোড রূপান্তর কোডে বিওএমটি কোথায় সরানো হয়েছে তা নির্ধারণ করা ভাল লাগবে।
Vebjorn Ljosa

0

আমার পরীক্ষায়, কোনও UTF-8ফাইল সম্পাদনা করা এনকোডিং পরিবর্তন করে না এবং বিওএম রয়ে গেছে ( efbb bf)। (nxml-মোড)

ওয়েল, এই মধ্যে পরিবর্তিত হতে পারে xml-modeএবং nxml-modeবা, Emacs এর সংস্করণ (24 বনাম 26)। এটি নীচে মোড বলে।

আপনি যদি কোনও ইমাসকে ইউনিকোড ( UTF-16ছোট এন্ডিয়ান) এ এনকোডযুক্ত একটি এক্সএমএল ফাইল সম্পাদনা করেন তবে এটি এনকোডিংটিকে UTF-16বড় এন্ডিয়ানে পরিবর্তন করবে । হয়তো এটাই সে কথা বলছে।

কিন্তু BOM এখনও আছে, থেকে পরিবর্তিত হয় fffeথেকে ffef, এবং NULLs এমনকি বাইট পরিবর্তে বিজোড় বাইট হয়। আপনি এটি হেক্সেল-মোডে দেখতে পারেন।

নমুনা এক্সএমএল ফাইল। যখন ইমাসগুলি এটি এক্সএমএল-মোড বা এনএক্সএমএল-মোডে সংরক্ষণ করে তখন এনকোডিং বৈশিষ্ট্যটি এনকোডিংকে নির্দেশ দেয়। ভবিষ্যতে বিওএমটি যাচাই করার জন্য ভবিষ্যতের সংস্করণ প্যাচ করা হবে।

<?xml version="1.0" encoding="UTF-16"?>
<hi />

দেখে মনে হচ্ছে ইমাকস UTF-16যেমন গ্রহণ করেছে UTF-16BE, উইন্ডোজ এটিকে গ্রহণ করে UTF-16LE(বিই এবং লে এনকোডিং বৈশিষ্ট্যের জন্য ইমা্যাকগুলিতে কাজ করে না)। এনকোডিং বৈশিষ্ট্যটি সম্ভবত এখানে সমস্যার মূল চাবিকাঠি।

এটিকে পাওয়ারশেলে সংরক্ষণ করা এটিকে আবারও ইউটিএফ-16 লেটে রূপান্তরিত করবে।

[xml]$xml = get-content test.xml; $xml.save('test.xml')

এনকোডিং = "UTF-16LE" এবং এনকোডিং = "UTF-16BE" সহ, বোমাটি সরানো হবে, ফাইলটি ইম্যাকগুলিতে অবিশ্বাস্য করে তুলবে। এটি একটি নিশ্চিত বাগ যা প্যাচ করা হবে: http://lists.gnu.org/archive/html/bug-gnu-emacs/2019-05/msg00892.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.