ফাইলনাম এনকোডিংগুলি সম্পর্কে প্রয়োজনীয়তা ফ্রেস করা


12

আমি একটি প্রয়োজনীয়তা বিশদ লেখার প্রক্রিয়ায় আছি, এবং প্রয়োজনীয়তার একটি অংশটি বাক্সে লেখার ক্ষেত্রে আমার দ্বিধা রয়েছে।

পরিস্থিতি: আমরা একটি ওয়েবসাইট থেকে ফাইলগুলি ডাউনলোড করি এবং ডাউনলোড করা ফাইলগুলি আমাদের কাছে থাকা সিএম সরঞ্জামের একটি আইটেমের সাথে সংযুক্ত করা দরকার। ডাউনলোড করা ফাইলগুলিতে এমন নাম রয়েছে যা এএসসিআইআই, আইএসও -8859-1, জাপানি ইত্যাদি হতে পারে contain

নীচের বাক্যে, "নন-এএসসিআইআই" সমস্ত পরিস্থিতি কভার করে?

ডাউনলোড করা ফাইলের নামটিতে নন-এসসিআইআই অক্ষর থাকতে পারে এবং এর প্রক্রিয়াজাতকরণের ফলে অ্যাপ্লিকেশন ক্রাশ হবে না


একটি ওয়েবসাইট থেকে , বা অনেক ওয়েবসাইট থেকে ? সেই একটি ওয়েবসাইটে কি সত্যিই একটি গাবলডেগুক ফাইল সিস্টেম রয়েছে?
200_সুচি

7
সুতরাং যদি ফাইলের নাম আসকি থাকে তবে অ্যাপ্লিকেশনটি ক্র্যাশ হওয়ার অনুমতি দেওয়া হয়;)
জে কে।

11
"জাপানি" কোনও এনকোডিং নয় তা বোঝানো কি পেডেন্টিক হবে?
Ixrec

@lxrec -> আপনি সঠিক। জাপানিরা কোনও এনকোডিং নয়। আমি যা বলতে চাই তা হ'ল জাপানি চরিত্র তবে পুরোপুরি টাইপ করে নি। ধন্যবাদ
KK99

@jk কিছু বাস্তবায়নে যদি ফাইলের নাম ASCII না হয় তবে অ্যাপ্লিকেশন ক্র্যাশ হয়ে গেছে। সত্য গল্প :-)
KK99

উত্তর:


30

প্রয়োজনীয়তা, যেমনটি বলা হয়েছে, আমার কাছে অস্পষ্ট।

আমার প্রথম প্রশ্নটি হ'ল: কয়টি অক্ষর এনকোডিং সমর্থন করা প্রয়োজন? সম্ভাব্য ব্যাখ্যার মধ্যে রয়েছে:

  1. একক-বাইট (যেমন আইএসও -8859-15 ), মাল্টিবাইট (যেমন বিগ 5 , শিফট-জেআইএস , এইচজেড ) এবং বিরল / অদ্ভুত একটি (যেমন ইউটিএফ -7 , পুনাইকোড , ইবিসিডিআইসি ) সহ প্রতিটি এনকোডিং তৈরি করা হয়েছে ever
  2. এটা অবশ্যই চরম। আইএসও -8859-1 নামমাত্র ন্যূনতম সমর্থন সম্পর্কে কীভাবে ?
  3. কেবল আইএসও -8859-1 এটিকে উইজেলি মনে হচ্ছে। কীভাবে কেবল ইউটিএফ -8 হিসাবে ইউনিকোড নামে আধুনিক সেরা অনুশীলনগুলিকে সমর্থন করা যায় ?

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

আরও যাচ্ছি, ফাইল নামটি দিয়ে ক্র্যাশ না করে সফ্টওয়্যারটির কী করা দরকার? উচিৎ কি…

  1. ফাইলের নামটি তার মূল এনকোডিংয়ে বাইট-বাই-বাইটে সংরক্ষণ করবেন?
  2. ইউনিকোডে সবকিছুকে সাধারণীকরণ করবেন? যদি তা হয় তবে কি উত্স এনকোডিংটি স্বয়ংক্রিয়ভাবে সনাক্ত করা দরকার? কোন প্রক্রিয়া দ্বারা?
  3. ইউনিকোড ফর্ম এবং মূল উভয়ই সংরক্ষণ করুন, যদি স্বাভাবিককরণ ব্যর্থ হয় তবে?

আপনার প্রয়োজনের আরও ভাল সংস্করণ হবে

ডাউনলোডকারীকে অবশ্যই বিভিন্ন এনকোডিংগুলিতে ফাইলের নামগুলি সমর্থন করতে হবে, কমপক্ষে ASCII, আইএসও -8859-1, আইএসও -8859-15, কেওআই 8-আর, ইউটিএফ -8, শিফট-জিআইএস, ইইউসি-জেপি, জিবি 2312 এবং বিগ 5 সহ। যদি ওয়েব সার্ভারের প্রতিক্রিয়া কোনও এনকোডিং নির্দিষ্ট করে, অবশ্যই এটি সম্মান করা উচিত। (যদি এনকোডিংটি অনির্ধারিত থাকে, আইএসও -8859-1 ধরে নেওয়া যেতে পারে, বা আরও ভাল অনুমান করা যেতে পারে)) বিষয়বস্তু পরিচালন সিস্টেমে ফাইলের নামগুলি ইউনিকোডের উপস্থাপনায় স্বাভাবিক করা হবে।

গ্রহণযোগ্যতার মানদণ্ড তৈরি করার জন্য প্রয়োজনীয় এনকোডিংগুলির নির্দিষ্ট উদাহরণগুলি প্রয়োজনীয়। সংযুক্ত বাক্যগুলি জানিয়েছে যে ক্রাশ না হয়েও সফ্টওয়্যারটির কী করা দরকার।


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

@ গ্যাবে ওয়েব সার্ভার, এটি ফাইল পরিবেশন করার সময় এনকোডিং নির্দেশ করতে পারে। যদি তা না হয় তবে এমন পাঠ্য বিশ্লেষণের হিউরিস্টিক্সও রয়েছে যা কোনও এনকোডিং অনুমান করতে পারে।
200_সুচি

2
মনে রাখবেন, আমরা ফাইলের বিষয়বস্তু নয়, নিজেরাই ফাইলের নাম নিয়ে কথা বলছি। প্রতিক্রিয়া হ'ল ওয়েব সার্ভারের ফাইলনামের এনকোডিং জানার কোনও উপায় নেই, সুতরাং যদি এটি দাবি করে যে ফাইলের নামটি একটি নির্দিষ্ট এনকোডিংয়ে রয়েছে তবে সম্ভবত এটি মিথ্যা। আপনি যদি ইউটিএফ -8 থেকে ইউটিএফ -16 এ রূপান্তর করার চেষ্টা করেন তবে আপনার ফাইলের নামটি সত্যই আইএসও -8859-1 হয়, আপনার সম্ভবত ক্রাশ হওয়ার সম্ভাবনা রয়েছে। এছাড়াও, পাঠ্যগুলির ফাইল-আকারের নমুনাগুলি থেকে এনকোডিংগুলি অনুমান করার জন্য কতটা খারাপ হিউরিস্টিকস রয়েছে তার উদাহরণের জন্য ব্লগস.এমএসএন / বি / ওল্ডনেউথিং / অর্কিভ / ২০০ive/০//১//2158334.aspx দেখুন ।
গ্যাবে

@ গ্যাবে নোট করুন যে আমি আইএসও -8859-1 কে ডিফল্ট হিসাবে প্রস্তাব করেছি। এর একটি কারণ রয়েছে - এটি যে বিপদগুলি আপনি উল্লেখ করেছেন তা এড়িয়ে চলে।
200_সাক্সেস 5'15

আমি আশঙ্কা করি যে ইউটিএফ -8 পর্যাপ্ত হবে না - কমপক্ষে উইন্ডোজের কয়েকটি সংস্করণ (FAT ফাইল সিস্টেম?) থেকে আপনি নন-ইউনিকোড স্থানীয় এনকোডিংগুলিতে ফাইলের নাম পাবেন - যেমন- win-1252 বা win-1257; ব্রাউজার আপলোড করার সময় ফাইলের নামগুলি utf-8 এ রূপান্তর করতে পারে তবে আমি সন্দেহ করি।
পিটারিস

14

আপনি যে প্রয়োজনীয়তাটি লিখেছেন তাতে ভাল প্রয়োজনের বৈশিষ্ট্য নেই । বিশেষত, এটি সংহত নয়, এটি পারমাণবিক নয়, এবং এটি স্পষ্ট নয়। এই বৈশিষ্ট্যগুলির অভাবের কারণে এটি সহজে যাচাইযোগ্যও হয় না।

আপনার প্রাথমিক রাষ্ট্রের প্রয়োজনীয়তা হ'ল:

ডাউনলোড করা ফাইলের নামটিতে নন-এসসিআইআই অক্ষর থাকতে পারে এবং এর প্রক্রিয়াজাতকরণের ফলে অ্যাপ্লিকেশন ক্রাশ হবে না

আমি "... অপসারণের প্রস্তাব দিচ্ছি এবং এর প্রক্রিয়াজাতকরণের ফলে অ্যাপ্লিকেশনটি ক্রাশ হবে না"। যদি আপনার কোনও চাহিদা থাকে যে কোনও সফ্টওয়্যারটির কিছু করা দরকার, আমি মনে করি এটি সফ্টওয়্যারটি ক্র্যাশ না করে এটি করা উচিত make

এটি প্রয়োজনীয়তাকে এতে রূপান্তরিত করে:

ডাউনলোড করা ফাইলের নামটিতে নন-এসসিআইআই অক্ষর থাকতে পারে

এখন, আপনার একটি সমন্বিত এবং পারমাণবিক প্রয়োজনীয়তা রয়েছে। তবে আমি নিশ্চিত নই যে এটি দ্ব্যর্থহীন। আপনার প্রশ্নে আপনি বিভিন্ন ফর্ম্যাট উল্লেখ করেছেন mention কয়েকটি অপশন আছে।

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

অন্যরা সমর্থিত ফর্ম্যাটগুলির একটি টেবিলের প্রস্তাব দিতে পারে এবং এই প্রয়োজনটি কোনও টেবিলের সাথে লিঙ্ক করে। এটি কম সম্পূর্ণ হবে (আপনার কাছে একটি পাঠ্য বাক্য এবং একটি টেবিল বজায় রাখতে হবে) তবে তারা একই দস্তাবেজ বা ডাটাবেসে থাকবে। তবে, আপনি যদি কোনও প্রয়োজনীয়তা পরিচালনার সরঞ্জামে লিঙ্কিং সম্পাদন করতে যাচ্ছেন তবে এগুলি একসাথে লিঙ্ক করা যেতে পারে যাতে একটিতে পরিবর্তনগুলি লিঙ্কিত প্রয়োজনীয়তাটি হাইলাইট করে। এটি পাঠ্যটিকে অন্য সফ্টওয়্যার প্যাকেজে যেমন প্রবাহিত করতে দেয় তবে বিভিন্ন এনকোডিংয়ের জন্য একটি পৃথক টেবিল রয়েছে।

কীভাবে আপনি প্রয়োজনীয়তাগুলি নথিভুক্ত করেন তা আপনার নির্দিষ্ট প্রয়োজনের উপর নির্ভর করে।


4

আপনার শব্দটির সাথে বেশ কয়েকটি সমস্যা রয়েছে যা প্রয়োজনীয়তা দুর্বল করে:

1) আপনার প্রয়োজনটি ইতিবাচক পদে প্রকাশ করা উচিত , বরং এটির কাজটি করা উচিত নয় । "ক্র্যাশ না হওয়া" এর জন্য কীভাবে একটি পরীক্ষা করে।

2) "ডাউনলোড করা ফাইলের নাম থাকতে পারে ..." বাক্যাংশটি অস্পষ্ট।

একটি প্রস্তাবিত বিকল্প শব্দগঠন (অবশ্যই নিখুঁত বিষয়যুক্ত, অবশ্যই) হতে পারে:

অ্যাপ্লিকেশনটি ডাউনলোড করা ফাইলের নামগুলিকে সমর্থন করবে যা নন-এএসসিআইআই অক্ষর ধারণ করে।

("সমর্থন" শব্দটি এখনও কিছুটা অস্পষ্ট এবং আপনার অ্যাপ্লিকেশনটির অন্যান্য প্রয়োজনীয়তার সাথে সংগতিপূর্ণ হলে এটি আরও কংক্রিট হিসাবে পরিবর্তিত হতে পারে))


1
স্ব-মন্তব্য: নন-এএসসিআইআই সর্বোত্তম শব্দও নয়, কারণ নন-এসএসআইআই অন্য কোনও এনকোডিংকে বোঝাতে পারে। আরও ভাল প্রয়োজন অনুমোদিত এনকোডিংগুলি তালিকাভুক্ত করে, যার ফলে ফলাফল প্রাপ্ত পরীক্ষাগুলি আরও নির্ধারণ করতে সক্ষম হয় যে সফ্টওয়্যারটি ইচ্ছাকৃতভাবে কাজ করে। অন্যথায়, একটি নন-এএসসিআইআই এনকোডিং পরীক্ষা করা প্রয়োজনীয়তা পূরণ করতে পারে তবে সফ্টওয়্যারটিকে পুরোপুরি পরীক্ষা করতে পারে না।
কেন্ট এ।

2
"অ্যাপ্লিকেশনটি ইউনিকোডের অক্ষরযুক্ত ফাইলগুলির ডাউনলোডের নামগুলি সমর্থন করবে" এবং এটি নির্দিষ্ট এনকোডিংটি অবশ্যই সমর্থন করবে যেমন, ইউটিএফ -8 উল্লেখ করা ভাল state

1

লিখিত হিসাবে অনুমানের সমস্যাটি হ'ল অ্যাপ্লিকেশনটি "আকর্ষণীয়" ফাইলের নামগুলির সাথে কী করা উচিত তা তা বলে না। আমি এমন একটি প্রোগ্রামের মুখোমুখি হয়েছি যা যে ফাইল ফাইলের অক্ষরগুলির সাথে এটি বোঝে না _সেগুলি প্রতিস্থাপন করবে , সেই প্রভাবের সাথে যখন একটি ডিরেক্টরি অনুলিপি করতে বলা হয়েছিল যেখানে দুটি অক্ষর রয়েছে যার নামগুলি অক্ষর বাদে ইউটিলিটিটি বোঝেনি, দ্বিতীয় ফাইল ডিরেক্টরিতে লিখিত প্রথম ওভাররাইট হবে। এই ধরনের আচরণ "ক্র্যাশ না হওয়া" হিসাবে যোগ্যতা অর্জন করবে, তবে এর অর্থ এই নয় যে এটি গ্রহণযোগ্যভাবে অনুপস্থিত একটি স্পষ্ট ধারণা হিসাবে বলা উচিত saying

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

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