ভিম অদ্ভুত অক্ষর দেখায় <91>, <92>


26

এসএমএইচ ওভার ব্যবহার করার সময় আমি একটি ওয়েবপৃষ্ঠা থেকে আমার এসএসএইচ / ভিম সেশনে কিছু সামগ্রী অনুলিপি করেছি এবং নিম্নলিখিত ফলাফল পেয়েছি:

SIZE=`df -h|grep $DISC|awk <91>{print $2}<92>`

স্পষ্টতই <91>এবং এর <92>জন্য দাঁড়াও 'কিন্তু আমি কীভাবে এই জিনিসগুলি অনুসন্ধান এবং প্রতিস্থাপন করতে পারি? এবং যে চাপলে কি হবে 91/ 92মানে? এটি কীভাবে এনকোড হয়েছে কারণ 91/ 92এএসসিআইআই মানে \এবং [?

উত্তর:


23

আপনার উত্স ওয়েব পৃষ্ঠায় লিখিত সামগ্রী অত্যধিক মাত্রায় পুনরায় ফর্ম্যাট করা হয়েছিল। টেক্সট নিঃসন্দেহে ব্যবহার করার কথা ছিল (সোজা) একক উদ্ধৃতি (হওয়া ASCII 39/0x27, U+0027কোঁকড়া একক উদ্ধৃতি পরিবর্তে) ( U+2018এবং U+2019, যা হয় 0x91 and 0x92CP1252 (এছাড়াও এমএস ANSI এবং জানালা-1252 নামে পরিচিত; Windows এ একটি সাধারণ 8-বিট এনকোডিং)) ।

ভিম আপনাকে হেক্স কোডগুলি দেখাচ্ছে কারণ ভিম যে কোনও এনকোডিং ব্যবহার করছে (সম্ভবত ইউটিএফ -8) এগুলি বৈধ নয়। যদি আপনি কোনও ফাইলটিতে ইতিমধ্যে সংরক্ষণ করা পাঠ্য সম্পাদনা করছেন তবে আপনি সিপি 1252 হিসাবে ফাইলটি পুনরায় লোড করতে পারেন :e ++enc=cp1252; এটি কোঁকড়ানো উদ্ধৃতি দৃশ্যমান করা উচিত। তবে এটি সিপি 1252 হিসাবে পুনরায় লোড করার কোনও সত্য কারণ নেই, কেবলমাত্র 0x91এবং 0x92অক্ষরগুলি মুছুন এবং তাদের একক উদ্ধৃতি দিয়ে প্রতিস্থাপন করুন।


আপনি প্রায়শই এমএস ওয়ার্ড থেকে অনুলিপি করা সামগ্রী থেকে কোঁকড়া কোটস / অ্যাস্টোস্ট্রোফ পান যা "স্মার্ট কোটস" বৈশিষ্ট্যের অংশ হিসাবে কোঁকড়া উদ্ধৃতি / অ্যাডোস্ট্রোফকে স্বয়ংক্রিয়ভাবে সন্নিবেশ করে। যদি আপনার হরফ এই অক্ষরগুলি সমর্থন করে না, আপনি কেবল অক্ষরের পরিবর্তে একটি খালি স্থান পাবেন।
ল্যামব্যাক

1
+1 এর জন্য:e ++enc=cp1252
wfaulk

@ ক্রিস জোহেনসেন, একটি পতাকা দিয়ে ভিআই কল করার কোনও উপায় আছে যা একই জিনিসটি সম্পাদন করে :e ++enc=cp1252? আমি কম্যান্ড লাইন থেকে মাইক্রোসফট ওয়ার্ড অক্ষর সমন্বিত একটি ফাইল vi করতে চান তাহলে, এটি হবে চমৎকার এক ধাপে বরং খোলার চ চেয়ে এবং তারপর ফাইলটি লোড এটা করতে, পাবে :eকমান্ড
লিও সাইমন

@ লিওসিমন: vim --cmd 'set fileencodings=cp1252' /path/to/file- কমান্ডটি স্বাভাবিকের আগে চলে .vimrcএবং fileencodingsবিকল্পটি সেট করে (শেষের দিকে লক্ষ্য রাখুন s; আপনি সংক্ষিপ্ত নামটিও ব্যবহার করতে পারেন fencs) যাতে ফাইল লোড করার সময় ভিম কেবল সিপি 1252 চেষ্টা করে। এই জাতীয় ফাইলগুলির এক-অফ সম্পাদনার জন্য কাজ করা উচিত, তবে আপনি যদি অন্য এনকোডিং সহ ফাইলগুলি সম্পাদনা করতে ভিমের সেই উদাহরণটি ব্যবহার করতে চান তবে এটি জটিলতা সৃষ্টি করতে পারে।
ক্রিস জনসেন

ধন্যবাদ !, স্পষ্ট করে বলার জন্য, আমি এখন ব্যবহার করছিvim -c"set fencs" /path/to/file
লিও সাইমন

27

91 এবং 92 হ'ল কোডগুলি হ'ল ল্যাটিন 1 / আইএসও -8859-1 এনকোডিংয়ের এমএস উইন্ডোজ ডিফল্ট সংস্করণে খোলা এবং ঘনিষ্ঠ কোঁকড়ানো অ্যাস্ট্রোফির (একক উদ্ধৃতি), যা আরও নির্দিষ্টভাবে cp1252 / উইন্ডোজ-1252 নামে পরিচিত (যেখানে সিপি কোড বোঝায় পৃষ্ঠা)।

এই অক্ষরগুলি প্রায়শই লোকেরা "স্মার্ট উক্তি" বৈশিষ্ট্যের অংশ হিসাবে ওয়ার্ড ডকুমেন্টস / আউটলুক ইমেলগুলি থেকে সামগ্রী অনুলিপি করে sertedোকানো হয়। এই কোড পৃষ্ঠাতে অন্যান্য সমস্যার অক্ষর হেক্স 93৩ / ৯৪ যা ডাবল উক্তি, বুলেট পয়েন্ট (•) এবং ওই লিগচার (œ এবং Œ) বন্ধ রয়েছে। আপনি "সমস্যা চরিত্রগুলির" একটি সম্পূর্ণ তালিকা দেখতে পাবেন, যেগুলি একই কোডের সাথে সরাসরি আইএসও -8859-1 বা ইউটিএফ -8 এ ম্যাপ করে না, সিপি 1252 এর জন্য উইকিপিডা পৃষ্ঠায় সবুজ বর্ণিত

আপনার সমস্ত কিছু যদি ফাইলটি সঠিক এনকোডিংয়ে খুলতে হয় তবে ++ enc = cp1252 বিকল্পটি: e কমান্ডটি ব্যবহার করুন:

:e ++enc=1252 filename.txt

আপনি বিকল্প কমান্ড (: গুলি) এবং কোড বিকল্পগুলির মধ্যে একটির সাথে একটি বিশেষ ব্যাড হেক্স কোড প্রতিস্থাপন করতে পারেন:

\d123   decimal number of character
\o40    octal number of character up to 0377
\x20    hexadecimal number of character up to 0xff
\u20AC  hex. number of multibyte character up to 0xffff
\U1234  hex. number of multibyte character up to 0xffffffff

আপনাকে হেক্স 91/92 টি অক্ষর পরিবর্তন করতে হবে:

:%s/[\x91\x92]/'/g

ডিরেক্টরিতে সমস্ত ফাইলের মধ্যে এই অক্ষরগুলি প্রতিস্থাপন করার জন্য বাশ কমান্ড থাকা দুর্দান্ত হবে। আমি একটি দ্রুত গুগল অনুসন্ধান থেকে এটি নিয়ে এসেছি, sed -i "s/[\x91\x92]/\'/g" *.txtতবে এটি কার্যকর হয়নি।
বাটাল বুটকাস

আমি সবেমাত্র এমন কিছু পেয়েছি যা দেখে মনে হয়েছে কমান্ড লাইনের জন্য কাজ করছে। এটি বর্তমান ফোল্ডারে সমস্ত .txt ফাইলের সন্ধান / প্রতিস্থাপন করে। এটি ব্যবহার করার আগে রিসার্ক পার্ল, যদিও, সুইচগুলি কী করে তা আমার কোনও ধারণা নেই। perl -p -i -e "s/[\x91\x92]/'/g" *.txt
বাটল বাটকাস

2
sed -i "s/\x92/'/g"আমার জন্য কাজ।
করলি হরভাথ

3

iconvখোলার আগে টেক্সট ফাইলটি সিপি 1252 থেকে ইউটিএফ -8 এ রূপান্তর করতে ব্যবহার করুন ।

iconv -f cp1252 -t utf8 inputfile.csv > outputfile.csv

ম্যাক ওএসে এটি ব্যবহার করুন:

iconv -f cp1252 -t UTF8-MAC inputfile.csv  > outputfile.csv

-3

এগুলি প্রকৃতপক্ষে হেক্স 91 এবং 92 এর পক্ষে দাঁড়ায়, যা উইন্ডোজ কোডপেজের মধ্যে কোঁকড়ানো ও একক উদ্ধৃতিগুলি বন্ধ হয় ('এবং' - Alt-0145 এবং Alt-0146)।

নিম্নলিখিত অনুসন্ধান / প্রতিস্থাপন চেষ্টা করুন:

:s%/\<9[12]\>/'/g

1
পয়েন্টের অভাবে আমি হ্রাস করতে পারি না, তবে এই প্রতিস্থাপনের আদেশটি এত ভুল যে আমি কোথা থেকে শুরু করব জানি না :(
ল্যাম্ব্যাক

1
এটি আমার পক্ষে কাজ করে না: stackoverflow.com/questions/2798398/… কাজ করে এমন একটি সমাধান দেয়।
বিভ্রান্তি

@ ল্যাম্ব্যাক: আমি ধরে নিয়েছিলাম যে ফাইলটিতে আক্ষরিক স্ট্রিং রয়েছে "91" এবং "92", এবং সেক্ষেত্রে এই আদেশটি সঠিক। যদি এগুলি হেক্স অক্ষর হয় তবে আপনি ঠিক বলেছেন, আপনার বিকল্প প্রতিস্থাপন আদেশ বা এর অনুরূপ কিছু দরকার।
অ্যালেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.