ইউনিকোড এস্কেপ / আনএস্কেপ
টেক্সট পেস্ট করুন এবং এস্কেপগুলো সঙ্গে সঙ্গে দেখুন — অথবা \u4F60 পেস্ট করে অক্ষরগুলো ফিরে পান। কোনো বোতাম নেই, কিছুই আপলোড হয় না।
এস্কেপ করা টেক্সট
কীভাবে ব্যবহার করবেন
- Escape বা Unescape বেছে নিন — ইনপুট বক্স ঠিক আগের মতোই থাকে, তাই আবার টাইপ না করেই একই টেক্সট দুই দিক থেকে দেখতে পারেন।
- Escape: টেক্সট টাইপ বা পেস্ট করুন, এস্কেপগুলো সঙ্গে সঙ্গে দেখায়। আপনার টার্গেট ভাষা যে সিনট্যাক্স ব্যবহার করে সেটি বেছে নিন: \uXXXX (Java, JSON, .properties — BMP-এর উপরের অক্ষরগুলো UTF-16 সারোগেট জোড়া হয়), \u{X} (ES6 JavaScript, Rust, Swift, Ruby, PHP), \UXXXXXXXX (Python, C, Go, C#) অথবা U+XXXX (ইউনিকোডের প্রমিত নোটেশন)।
- পরিসর বাছুন: "Non-ASCII only" (ডিফল্ট) U+007F-এর উপরের সবকিছু এস্কেপ করে আর ASCII, স্পেস ও লাইন ব্রেক অক্ষত রাখে; "All characters" প্রতিটি কোড পয়েন্ট এস্কেপ করে, ফলে আউটপুট বিশুদ্ধ ASCII হয়।
- Unescape: এস্কেপযুক্ত টেক্সট পেস্ট করে অক্ষরগুলো ফিরে পান। ফলাফলের উপরের লাইনে কতগুলো অক্ষর ডিকোড হলো এবং কোনো টুকরা পড়া না গেলে সেটি কোনটি ও কোথায়, তা লেখা থাকে।
উদাহরণ
ইনপুট
Café "naïve" 😀
এস্কেপ করা
Caf\u00E9 "na\u00EFve" \uD83D\uDE00
"é"-এর কোনো ASCII রূপ নেই, তাই এটি \u00E9 হয়। "😀" হলো U+1F600, BMP-এর উপরে, তাই \uXXXX সিনট্যাক্সে এটি সারোগেট জোড়া \uD83D\uDE00 হিসেবে লেখা হয়। \u{X}-এ গেলে একই টেক্সট দেয় Caf\u{E9} "na\u{EF}ve" \u{1F600}; \UXXXXXXXX দেয় …\U0001F600; U+XXXX দেয় CafU+00E9 "naU+00EF ve" U+1F600 — é-এর পরে ডাবল স্পেসটি আলাদাকারী স্পেস আর টেক্সটে আগে থেকেই থাকা স্পেসের যোগফল। এর প্রত্যেকটি আবার Unescape-এ পেস্ট করলে অপরিবর্তিত ফিরে আসে।
নিয়ম, সীমাবদ্ধতা ও পরিচিত সমস্যা
- কেবল চারটি সিনট্যাক্স চেনা হয়: \uXXXX (ঠিক 4 হেক্স ডিজিট), \u{X} (1–6 ডিজিট), \UXXXXXXXX (ঠিক 8 ডিজিট) এবং U+XXXX (1–6 ডিজিট, বড় হাতের U+)। %uXXXX, \x{X}, CSS \X ও \N{NAME} সমর্থিত নয়; 你-এর মতো HTML রেফারেন্স HTML এনটিটি টুলের কাজ।
- \uXXXX নির্দিষ্টভাবে 4 ডিজিট: \u12 ও \u12345 কে \uXXXX হিসেবে পড়া হয় না — \u12345 ডিকোড হয় U+1234 এর পরে আক্ষরিক "5" হিসেবে। 1–6 ডিজিট দরকার হলে \u{…} লিখুন।
- \uXXXX-এর কোনো অক্ষর-সীমানা নেই: \u4F60abc ডিকোড হয় 你abc, আর U+4F601 হলো U+4F601 কোড পয়েন্ট (5 ডিজিট, বৈধ), U+4F60 এর পরে "1" নয়।
- U+XXXX-এ কোড পয়েন্টের পরে একটি স্পেস আলাদাকারী, বিষয়বস্তু নয়: U+4F60 hello ডিকোড হয় 你hello। এই টুল প্রতিটি U+ টোকেনের পরে একটি স্পেস লেখে (একেবারে শেষেরটি ছাড়া), তাই এর নিজের আউটপুট রাউন্ড-ট্রিপ করে; স্পেস ছাড়া হাতে লেখা টোকেন পরের হেক্স ডিজিটের সঙ্গে জুড়ে যায় এবং অচেনা হিসেবে গণনা হয়।
- সারোগেট জোড়া কেবল \uXXXX সিনট্যাক্সে দেখা যায়, কারণ এটি Java/JSON-এর রূপ; \u{1F600}, \U0001F600 ও U+1F600 কোড পয়েন্ট সরাসরি লেখে। নিম্ন সারোগেট ছাড়া উচ্চ সারোগেট যেমন লেখা তেমনই থাকে ও অচেনা হিসেবে গণনা হয় — কখনো "�" দিয়ে বদলানো হয় না।
- U+10FFFF-এর উপরের কোড পয়েন্ট এবং সারোগেট পরিসরও একইভাবে প্রত্যাখ্যাত: যেমন লেখা তেমনই থাকে ও গণনা হয়, নীরবে বদলানো হয় না।
- "Non-ASCII only" পরিসর আক্ষরিক ব্যাকস্ল্যাশ এস্কেপ করে না: আপনার টেক্সটে আগে থেকেই \u4f60 থাকলে Unescape সেটি এস্কেপ হিসেবে পড়বে। এই দ্ব্যর্থতা পরিসরেরই স্বভাব — ব্যাকস্ল্যাশ গুরুত্বপূর্ণ হলে "All characters" বেছে নিন।
- ডিকোডিং একবারে হয়: \u005Cu4F60 থেকে আক্ষরিক টেক্সট \u4F60 হয়, 你 নয়। সত্যিই দুই স্তর দরকার হলে আবার পেস্ট করুন।
- বৈধ কন্ট্রোল অক্ষর নিজের মতোই ডিকোড হয়: \u0000 দেয় U+0000 (অদৃশ্য, কিন্তু ত্রুটি নয়), তাই আউটপুটে এমন অক্ষর থাকতে পারে যা আপনি দেখতে পান না।
- \n ও \t-এর মতো স্ট্রিং এস্কেপ সাধারণ টেক্সট হিসেবে থাকে ও গণনায় আসে না, আর সম্পূর্ণ JSON স্ট্রিং লিটারেল আলাদা বিষয়। URL, HTML ও Base64 এনকোডিংও আলাদা টুল।
- সর্বোচ্চ 100,000 অক্ষর; এর বেশি হলে কাটা ফলাফলের বদলে ত্রুটি দেখায়। 20,000 অক্ষরের বেশি হলে টাইপ থামানোর প্রায় 0.6 সেকেন্ড পরে ফলাফল আসে।
- কোনো ফাইল আপলোড নেই, ইতিহাস নেই, আর আপনার ইনপুট বহনকারী কোনো শেয়ার লিংকও নেই: সবকিছু আপনার ব্রাউজারে চলে এবং টেক্সট কখনো পেজ ছাড়ে না।
সম্পর্কিত টুল
টেক্সট এস্কেপ বা আনএস্কেপ হওয়ার পর সাধারণত যা দরকার।