রুবেল অন রেলস 3 এ (বর্তমানে বিটা 4 ব্যবহার করছে) আমি দেখতে পাচ্ছি the ( ইউনিকোড \ x9731) এর মান সহ একটি লুকানো ক্ষেত্র রয়েছে যা সহায়ক form_tag
বা form_for
সহায়তাকারীদের ব্যবহার করার সময় দেখায়।_snowman
তো, এটা কিসের জন্য?
রুবেল অন রেলস 3 এ (বর্তমানে বিটা 4 ব্যবহার করছে) আমি দেখতে পাচ্ছি the ( ইউনিকোড \ x9731) এর মান সহ একটি লুকানো ক্ষেত্র রয়েছে যা সহায়ক form_tag
বা form_for
সহায়তাকারীদের ব্যবহার করার সময় দেখায়।_snowman
তো, এটা কিসের জন্য?
উত্তর:
ইন্টারনেট এক্সপ্লোরারকে (5, 6, 7 এবং 8) ইউনিকোড হিসাবে এর পরামিতিগুলিকে এনকোড করতে বাধ্য করার জন্য এই প্যারামিটারটি ফর্মগুলিতে যুক্ত করা হয়েছিল ।
বিশেষত, ব্যবহারকারী যদি ব্রাউজারের এনকোডিংটি লাতিন -1 এ সরিয়ে দেয় তবে এই বাগটি ট্রিগার করা যেতে পারে। কোনও ব্যবহারকারী কেন এতটা উন্মাদ বলে মনে হচ্ছে এই গুগল অনুসন্ধানটি পরীক্ষা করে দেখুন । ব্যবহারকারী একবার ওয়েব সাইটটি লাতিন -১ মোডে রাখার পরে, যদি তারা ল্যাটিন -১ এবং ইউনিকোড (উদাহরণস্বরূপ, é বা ç, নামে প্রচলিত) উভয় হিসাবে বোঝা যায় এমন অক্ষর ব্যবহার করে তবে ইন্টারনেট এক্সপ্লোরার সেগুলি লাতিন ভাষায় এনকোড করবে -1।
এর অর্থ হ'ল কোনও ব্যবহারকারী যদি "চ গুয়েভারা" অনুসন্ধান করেন তবে এটি সার্ভার-সাইডে ভুলভাবে আসবে। রুবি ১.৯-এ, পাঠ্য যখন অনিবার্যভাবে নিয়মিত এক্সপ্রেশন ইঞ্জিনে প্রবেশ করে তখন এটি একটি এনকোডিং ত্রুটির ফলস্বরূপ। রুবি ১.৮-এ এটি ব্যবহারকারীর জন্য ভাঙ্গা ফলাফল ঘটবে।
একটি প্যারামিটার তৈরি করে যা কেবলমাত্র ইউনিকোড চরিত্র হিসাবে আইই দ্বারা বোঝা যায়, আমরা IE কে গ্রহণ-চরসেট বৈশিষ্ট্যটি দেখতে বাধ্য করছি, যা পরে এটি ইউটিএফ -8 হিসাবে সমস্ত অক্ষরকে এনকোড করতে বলে, এমনকি এমন একটি অক্ষরও যা এনকোড করা যায় লাতিন -১ এ।
মনে রাখবেন যে রুবি 1.8, এটা অত্যন্ত আপনার হল UTF-8 ডাটাবেসের মধ্যে ল্যাটিন -1 ডেটা পেতে তুচ্ছ (যেহেতু কিছুই সমগ্র স্ট্যাকের চেক বাইট ব্যবহারকারী যেকোনো সময় পাঠানো বৈধ হল UTF-8 টি অক্ষর আছে)। ফলস্বরূপ, রুবি অ্যাপ্লিকেশনগুলির (এবং পিএইচপি অ্যাপ্লিকেশন ইত্যাদি) ব্যবহারকারীর মুখোমুখি এই বাগটি প্রদর্শন করা অত্যন্ত সাধারণ এবং ব্যবহারকারীদের জন্য পলিয়েটিভ ব্যবস্থা হিসাবে এনকোডিংটি পরিবর্তন করার চেষ্টা করা অত্যন্ত সাধারণ।
যা কিছু বলেছিল, যখন আমি এই প্যাচটি লিখেছিলাম তখন আমি বুঝতে পারি নি যে প্যারামিটারটির নামটি কোনও ব্যবহারকারী-মুখোমুখী জায়গায় উপস্থিত হবে (এটি ফর্মগুলির সাথে ঘটে যা জিইটি অ্যাকশন ব্যবহার করে যেমন সন্ধানের ফর্মগুলি)। যেহেতু এটি করা হয়, আমরা এই প্যারামিটারটির নতুন নামকরণ করব _e
এবং আরও নির্দোষ দেখাচ্ছে ইউনিকোড চরিত্রটি ব্যবহার করব।
ইন্টারনেট এক্সপ্লোরার 5 সমর্থন করার জন্য এবং এটির রূপগুলির জন্য ইউটিএফ -8 ব্যবহার করতে উত্সাহিত করার জন্য এটি এখানে।
এখানে দেখা প্রতিশ্রুতিবদ্ধ বার্তাটি নীচে সেটির বিবরণ দেয়:
বেশ কয়েকটি পরিচিত ওয়েব এনকোডিংয়ের সমস্যাগুলি ঠিক করুন:
- সমস্ত ফর্মের উপর গ্রহণযোগ্য-অক্ষর নির্দিষ্ট করুন। সমস্ত সাম্প্রতিক ব্রাউজারগুলি, পাশাপাশি আই 5 +, ফর্ম পরামিতিগুলির জন্য নির্দিষ্ট এনকোডিংটি ব্যবহার করবে
- দুর্ভাগ্যক্রমে, আই 5 + যদি ফর্মের মানগুলির মধ্যে কমপক্ষে একটি অক্ষর পৃষ্ঠার অক্ষরে না থাকে তবে গ্রহণযোগ্য-অক্ষরটির দিকে নজর দেবে না। যেহেতু ব্যবহারকারী ডিফল্ট
চরসেটটি ওভাররাইড করতে পারে (যা রেলগুলি ইউটিএফ -8 এ সেট করে) তাই আমরা ইউনিকোড অক্ষরযুক্ত একটি লুকানো ইনপুট সরবরাহ করি, আইইকে গ্রহণযোগ্য-অক্ষরটি দেখতে বাধ্য করি।- এখন যে ওয়েব ইনপুটগুলির সিংহভাগটি ইউটিএফ -8, আমরা ইনবাউন্ড প্যারামিটারগুলি ইউটিএফ -8 এ সেট করি। এটি ASCII-8BIT এবং
UTF-8 এর মধ্যে বেমানান এনকোডিংয়ের অনেকগুলি কেস দূর করবে ।- আপনি নিরাপদে প্যারামগুলি উপেক্ষা করতে পারেন [: _ স্নোম্যান]
সংক্ষেপে, আপনি এই প্যারামিটারটি নিরাপদে উপেক্ষা করতে পারেন।
তবুও, আমি নিশ্চিত না যে আমরা ইন্টারনেট এক্সপ্লোরার ৫ এর মতো পুরানো প্রযুক্তিগুলিকে কেন সমর্থন করছি you আপনি যদি আমাকে জিজ্ঞাসা করেন তবে এটি রেলের সিদ্ধান্ত নেওয়ার পক্ষে খুব অ-রুবি বলে মনে হচ্ছে।