আমার উত্স কোডটি ইউটিএফ -8 এ থাকা উচিত?


10

আমি অনুভব করি যে প্রায়শই আপনি আপনার কোডটি কোন ফর্ম্যাটে রয়েছে তা সত্যই পছন্দ করেন না I আমার অর্থ অতীতে আমার বেশিরভাগ সরঞ্জাম আমার জন্য সিদ্ধান্ত নিয়েছে। বা আমি সত্যিই এটি সম্পর্কে চিন্তাও করিনি। আমি অন্য দিন উইন্ডোজটিতে টেক্সটপ্যাড ব্যবহার করছিলাম এবং আমি যখন একটি ফাইল সংরক্ষণ করছিলাম তখন এটি আমাকে ASCII, UTF-8/16, ইউনিকোড ইত্যাদি সম্পর্কে জিজ্ঞাসা করেছিল ...

আমি ধরে নিচ্ছি যে প্রায় সমস্ত লিখিত কোড ASCII, তবে কেন এটি ASCII হওয়া উচিত? আমাদের এখন উত্স কোডের জন্য ইউটিএফ -8 ফাইলগুলি ব্যবহার করা উচিত এবং কেন? আমি ভাবতে পারি এটি বহুভাষিক দলগুলিতে কার্যকর হতে পারে। বহুভাষিক দলগুলি কীভাবে ভেরিয়েবল / ফাংশন / ইত্যাদি নাম রাখে তার সাথে কি এমন মানদণ্ড যুক্ত রয়েছে?


6
আমি ক্লিঙ্গনে আমার সমস্ত কোড লিখি, আপনি সংবেদনশীল দল!

5
@ জ্যাকমনে: এটি / নয়। তুমি সংবেদনশীল দল!
হতাশ

এবং ক্লিংগন স্ক্রিপ্টটি ইউনিকোডে নেই, সুতরাং আপনাকে "ব্যক্তিগত ব্যবহার" অক্ষর বা একটি এএসসিআইআই লিখিত লিখিতরূপ ব্যবহার করতে হবে।
dan04

@ ডান04: ক্লিঙ্গনের বিএমপির ব্যক্তিগত ব্যবহারের অংশের ছদ্ম-মান ব্যবহার রয়েছে ( কনসক্রিপ্টের রেজিস্ট্রি দেখুন ) :-)
রস প্যাটারসন

এখানে যুক্তিগুলিও দেখুন: utf8everywhere.org
ররি হান্টার

উত্তর:


23

পছন্দটি ASCII এবং UTF-8 এর মধ্যে নয়। এএসসিআইআই একটি 7-বিট এনকোডিং এবং ইউটিএফ -8 এটিকে ছাড়িয়ে যায় - কোনও বৈধ ASCII পাঠ্যটি বৈধ ইউটিএফ -8ও হয়। আপনি যখন অ-এসসিআইআই অক্ষর ব্যবহার করেন তখন সমস্যাগুলি দেখা দেয়; এগুলির জন্য আপনাকে ইউটিএফ -8, ইউটিএফ -16, ইউটিএফ -32, এবং বিভিন্ন 8-বিট এনকোডিংগুলি (আইএসও-এক্সএক্সএক্সএক্সএক্স, ইত্যাদি) চয়ন করতে হবে।

সর্বাধিক সমাধান হ'ল একটি কঠোর ASCII অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষরে অক্ষম থাকার অর্থ, কেবল আপনার কোডটিতে কোনও ASCII অক্ষর ব্যবহার করবেন না। বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি ASCII অক্ষর ব্যবহার করে অ-ASCII অক্ষর প্রকাশ করার উপায় সরবরাহ করে, উদাহরণস্বরূপ, "\u1234"ইউনিকোড কোড পয়েন্টটি 1234-এ চিহ্নিত করা Especially এমনকি যদি তারা সঠিকভাবে কাজ করে তবে পৃথক কীবোর্ড বিন্যাস ব্যবহার করা লোকেরা এই অক্ষরগুলি টাইপ করার জন্য আপনাকে অভিশাপ দিতে চলেছে।

আপনি যদি নন-এসসিআইআই অক্ষরগুলি এড়াতে না পারেন তবে ইউটিএফ -8 আপনার সেরা বাজি bet ইউটিএফ -16 এবং ইউটিএফ -32-এর বিপরীতে, এটি ASCII এর একটি সুপারস্টার, যার অর্থ যে কেউ যদি এটিকে ভুল এনকোডিং দিয়ে খোলে তবে তার বেশিরভাগ অংশই সঠিক হয়ে যায়; এবং 8-বিট কোডেপেজের বিপরীতে, এটি আপনার প্রয়োজনীয় প্রতিটি অক্ষরকে এনকোড করতে পারে, নির্বিঘ্নে এবং এটি স্থানীয়ভাবে নির্বিশেষে প্রতিটি সিস্টেমে উপলব্ধ।

এবং তারপরে আপনার কোডটি প্রক্রিয়া করে এমন এনকোডিং রয়েছে; এটি আপনার উত্স ফাইলটির এনকোডিংয়ের মতো হতে হবে না। উদাহরণস্বরূপ, আমি সহজেই ইউটিএফ -8 এ পিএইচপি লিখতে পারি, তবে এর অভ্যন্তরীণ মাল্টিবাইট-এনকোডিংটি সেট করে বলি, ল্যাটিন -1; পিএইচপি পার্সার মোটেও এনকোডিংগুলির সাথে নিজেকে উদ্বেগ দেয় না, বরং কেবল বাইট সিকোয়েন্সগুলি পড়ে, আমার ইউটিএফ -8 স্ট্রিং লিটারেলগুলি ল্যাটিন -1 হিসাবে ভুল ব্যাখ্যা করা হবে। আমি যদি কোনও ইউটিএফ -8 টার্মিনালে এই স্ট্রিংগুলি আউটপুট দেয় তবে আপনি কোনও পার্থক্য দেখতে পাবেন না, তবে স্ট্রিংয়ের দৈর্ঘ্য এবং অন্যান্য মাল্টিবাইট ক্রিয়াকলাপগুলি (যেমন substr) ভুল ফলাফল আনবে।

আমার থাম্বের নিয়মটি হ'ল প্রতিটি কিছুর জন্য ইউটিএফ -8 ব্যবহার করা; কেবলমাত্র যদি আপনাকে অন্য এনকোডিংগুলির সাথে ডিল করতে হয় তবে যত তাড়াতাড়ি সম্ভব ইউটিএফ -8 তে এবং যত তাড়াতাড়ি সম্ভব ইউটিএফ -8 থেকে রূপান্তর করুন।


6

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


2
আপনি এটি দেখে মনে হচ্ছে যেন ASCII বনাম UTF-8 একটি পছন্দ is কোনও ফাইলে যখন ASCII বিহীন অক্ষর থাকে তখন তা হয় না। সেখানে মাত্র ASCII অক্ষর হয়, হল UTF-8 হয় হওয়া ASCII।
ফ্রেড ফু

আমি আশা করি যে গ্রহটি এটি মেনে চলবে। প্রথম বর্ষের সিএস-ইশ শিক্ষার্থী হিসাবে, গ্রুপে কাজ করার সময় আমার godশ্বর অনেক মাথা ব্যথার কারণ হয়ে দাঁড়িয়েছিলেন, যেখানে ওএস এক্স, উইন্ডোজ এবং লিনাক্স ব্যবহারকারীদের উপস্থিতি রয়েছে। (রেফারেন্সের জন্য এটি ওএস এক্স, মাইক্রোমানের উইন্ডোজ সিপি -১২২২ এ ডিফল্ট হয়েছে এবং লিনাক্সের মধ্যে কোনটি আমি ভুলে গিয়েছিলাম তবে আপনি এটির চেয়ে আলাদা মনে করেন।)
লেফুলিং

@ উদযাপন - সম্ভবত একটি ডিফল্ট পরিবেশ এনকোডিং যা বর্তমানে সাধারণত ইউটিএফ -8 থাকে।
ম্যাকিয়েজ পাইচোতকা

1

উত্স কোডে উদ্ধৃত স্ট্রিং বা অক্ষরগুলিতে সরল পাঠ্য টাইপ করতে সক্ষম হওয়া এবং প্রকৃত চরিত্রটি দেখতে সক্ষম হওয়া খুব দুর্দান্ত is উদাহরণস্বরূপ, পাই চিহ্ন 'π' বা আদর্শগ্রন্থ 'p' পাই এর জন্য সমান '\ u3c0' এবং আদর্শের জন্য এল '\ u2000A' এর চেয়ে অনেক সুন্দর।

কোনও শালীন সম্পাদক হিসাবে আপনি যেমন ASCII অক্ষরগুলি করতে চান ঠিক তেমন অক্ষরগুলি সরাসরি উত্স কোডে টাইপ এবং / অথবা অনুলিপি করা এবং আটকানো সম্ভব।

আমি শব্দের বিবরণ কখনও কখনও বাসায় চালিত হয় না বলে মনে হয় এমন জিনিসগুলি ধারণা এবং ধারণার ক্ষেত্রে সহায়ক উদাহরণ খুঁজে পাই। সোর্স কোডে টাইপ করা ইউনিকোড চরিত্রের ধ্রুবকগুলি ধারণার মতো করুন যেমন নীচের সংক্ষিপ্ত উদাহরণ কোড স্নিপেট:

const unsigned char  ASCII_0X7E      = (unsigned char)  '~';
const unsigned short UNICODE_0X3C0   = (unsigned short) 'π';
const unsigned long  UNICODE_0X2000A = (unsigned long)  '𠀊';
const unsigned long  UNICODE_0X2893D = (unsigned long)  '𨤽';

ASCII টিল্ড অক্ষর '~' একটি ASCII বা UTF-8 উত্স ফাইলে সংরক্ষণ করা যেতে পারে তবে ইউনিকোড অক্ষর ASCII আকারে সংরক্ষণ করতে সক্ষম হয় না। পিআই প্রতীক 'π' ইউনিকোড কোড পয়েন্ট 0x3c0 এবং ইউটিএফ -8 আকারে দুটি বাইট মান 0xcf, 0x80 হিসাবে সংরক্ষণ করা যেতে পারে। ইউনিকোড কোড পয়েন্ট 0x2000a এবং 0x2893d এ আইডোগ্রাফগুলির জন্য 4 বাইট ইউটিএফ -8 ক্রম প্রয়োজন।

এই অক্ষরগুলি তাদের উদ্দেশ্যযুক্ত মানগুলি রক্ষা করতে এবং সংকলককে তাদের উদ্দেশ্য হিসাবে ব্যাখ্যা করার জন্য, উত্স কোডটি এমন একটি ফর্ম্যাটে সংরক্ষণ করা দরকার যা ইউনিকোড অক্ষর সেটটিকে সমর্থন করে, যেমন ইউটিএফ -8 বা ইউটিএফ -16। যদি ইউটিএফ -8 হিসাবে সংরক্ষণ করা হয় তবে একটি শালীন সংকলক ইচ্ছাপূর্বক মানগুলি বোঝে এবং ব্যাখ্যা করবে এবং একটি শালীন সম্পাদক চরিত্রগুলি লোড করে সঠিকভাবে প্রদর্শন করবে।

যেমন অন্যরা ইঙ্গিত করছে, আপনার সোর্স কোডে যদি আপনার ASCII সীমার বাইরে থাকে কেবল এমন অক্ষর না থাকে তবে ইউটিএফ -8 হিসাবে সংরক্ষণের ফলে এমন একটি ফাইল তৈরি হবে যা কোনও ইউএসএফআই ফাইল সংরক্ষণের চেয়ে আলাদা নয়, যেহেতু ইউটিএফ- 8 অক্ষর ASCII পরিসীমা মধ্যে ASCII ওভারল্যাপ ডিজাইন করা হয়েছে। আপনার উত্স কোডে যে কোনও অক্ষর ASCII সীমার বাইরে রয়েছে টাইপ করার সাথে সাথে একটি শালীন সম্পাদক আপনাকে জানিয়ে দেবে যে ফাইলটি সংরক্ষণ করতে আপনাকে কোনও এনকোডিং বাছাই করতে হবে। ইউটিএফ -8 হ'ল একটি ভাল পছন্দ যেহেতু এটি ASCII যেমনটি পরিচালনা করতে পারে এবং কার্যত আপনার বিকাশের পরিবেশে সমর্থিত অন্যান্য প্রতিটি চরিত্র।

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