আমার সাসচায় একমত হতে হবে। TCHAR
/ _T()
/ ইত্যাদির অন্তর্নিহিত ভিত্তিটি হ'ল আপনি একটি "এএনএসআই" ভিত্তিক অ্যাপ্লিকেশন লিখতে পারেন এবং তারপরে যাদুতে ম্যাক্রো সংজ্ঞায়িত করে ইউনিকোড সমর্থন দিতে পারেন। তবে এটি বেশ কয়েকটি খারাপ অনুমানের উপর ভিত্তি করে:
আপনি সক্রিয়ভাবে আপনার সফ্টওয়্যারটির এমবিসিএস এবং ইউনিকোড সংস্করণ উভয়ই তৈরি করেছেন
অন্যথা, আপনি হবে আপ চিলতা এবং সাধারণ ব্যবহার char*
অনেক জায়গায় স্ট্রিং।
যে আপনি অ-এএসসিআইআই ব্যাকস্ল্যাশ ব্যবহার করতে পারবেন না এটি _T ("...") লিটারেলগুলিতে পালিয়ে যায়
আপনার "এএনএসআই" এনকোডিংটি আইএসও -8859-1 না হওয়া পর্যন্ত ফলাফল char*
এবং wchar_t*
আক্ষরিক একই অক্ষরকে উপস্থাপন করবে না।
ইউটিএফ -16 স্ট্রিংগুলি "এএনএসআই" স্ট্রিংয়ের মতোই ব্যবহৃত হয়
তারা না. ইউনিকোড বেশ কয়েকটি ধারণার প্রবর্তন করে যা বেশিরভাগ উত্তরাধিকার চরিত্রের এনকোডিংগুলিতে নেই। সারোগেটস। সম্মিলিত অক্ষর। সাধারণীকরণ। শর্তাধীন এবং ভাষা-সংবেদনশীল কেসিং বিধি।
এবং সম্ভবত সবচেয়ে গুরুত্বপূর্ণভাবে, ইউটিএফ -16 খুব কমই ডিস্কে সংরক্ষণ করা হয় বা ইন্টারনেটে প্রেরণ করা হয়: ইউটিএফ -8 বাহ্যিক উপস্থাপনের জন্য পছন্দ করা পছন্দ করে।
আপনার অ্যাপ্লিকেশনটি ইন্টারনেট ব্যবহার করে না
(এখন, এটি আপনার সফ্টওয়্যারটির জন্য একটি বৈধ ধারণা হতে পারে , তবে ...)
ওয়েবটি ইউটিএফ -8 এবং বিরল এনকোডিংগুলির আধিক্যতে চলে । TCHAR
ধারণা মাত্র দুটি স্বীকার: "ANSI" (যা করতে পারবেন না হল UTF-8 হতে ) এবং "ইউনিকোড" ইউনিকোড (UTF-16)। এটি আপনার উইন্ডোজ এপিআই কলকে ইউনিকোড-সচেতন করার জন্য কার্যকর হতে পারে তবে আপনার ওয়েব এবং ই-মেইল অ্যাপ্লিকেশনগুলি ইউনিকোড-সচেতন করার জন্য এটি অকেজো।
আপনি কোনও মাইক্রোসফ্ট গ্রন্থাগার ব্যবহার করেন না
অন্য কেউ ব্যবহার করে না TCHAR
। পোকো ব্যবহার করে std::string
এবং ইউটিএফ -8। এসকিউএলাইটের ইউটিএফ -8 এবং ইউটিএফ -16 এর API এর সংস্করণ রয়েছে, তবে নেই TCHAR
। TCHAR
এমনকি স্ট্যান্ডার্ড লাইব্রেরিতে নেই, তাই std::tcout
আপনি নিজের এটি সংজ্ঞায়িত করতে না চাইলে না।
আমি TCHAR এর পরিবর্তে যা প্রস্তাব দিই
ভুলে যাবেন যে "এএনএসআই" এনকোডিংগুলি অস্তিত্ব রয়েছে, যখন আপনাকে এমন কোনও ফাইল পড়তে হবে যা বৈধ ইউটিএফ -8 নয়। TCHAR
খুব ভুলে যাও উইন্ডোজ এপিআই ফাংশনের সর্বদা "ডাব্লু" সংস্করণ কল করুন। #define _UNICODE
কেবল আপনি দুর্ঘটনাক্রমে একটি "এ" ফাংশন কল করবেন না তা নিশ্চিত করার জন্য।
স্ট্রিংগুলির জন্য সর্বদা ইউটিএফ এনকোডিংগুলি ব্যবহার করুন: স্ট্রিংয়ের জন্য ইউটিএফ -8 এবং char
স্ট্রিংয়ের জন্য ইউটিএফ -16 (উইন্ডোজে) বা ইউটিএফ -32 (ইউনিক্সের মতো সিস্টেমে) wchar_t
। typedef
UTF16
এবং UTF32
চরিত্র ধরনের প্ল্যাটফর্ম পার্থক্য এড়ানো।