ইউআরএলগুলিতে ইউনিকোড অক্ষর


135

2010 সালে, আপনি কি কোনও বৃহত ওয়েব পোর্টালে ইউটিএফ -8 অক্ষর যুক্ত ইউআরএল পরিবেশন করবেন?

ইউনিকোডের আরএফসি অনুযায়ী ইউনিকোড অক্ষর নিষিদ্ধ ( এখানে দেখুন )। তারা মান মেনে চলতে শতাংশ এনকোড হতে হবে।

আমার মূল বক্তব্যটি যদিও সুন্দর চেহারার ইউআরএল থাকার একমাত্র উদ্দেশ্যে বিনাবিহীন অক্ষরগুলি পরিবেশন করছে, তাই শতাংশ এনকোডিং শেষ is

সমস্ত বড় ব্রাউজারগুলি আরএফসি যা বলুক না কেন এই URL গুলিকে পার্স করছে বলে মনে হচ্ছে। তবে আমার সাধারণ ধারণাটি হ'ল ওয়েব ব্রাউজারগুলির ডোমেনটি ছেড়ে যাওয়ার সময় এটি খুব নড়বড়ে হয়ে যায়:

  • ইউআরএলগুলি অনুলিপি পাঠ্য ফাইলগুলিতে, ই-মেলগুলি, এমনকি কোনও আলাদা এনকোডিং সহ ওয়েব সাইটগুলিতে + আটকানো হচ্ছে
  • এইচটিটিপি ক্লায়েন্ট লাইব্রেরি
  • বহিরাগত ব্রাউজারগুলি, আরএসএস পাঠক

এখানে কি আমার ধারণাটি সঠিক যে সমস্যার আশা করা উচিত, এবং এটি কোনও ব্যবহারিক সমাধান নয় (এখনও) যদি আপনি অ-প্রযুক্তিগত শ্রোতাদের পরিবেশন করছেন এবং আপনার সমস্ত লিঙ্কগুলি উদ্ধৃত এবং পাস করা সত্ত্বেও সঠিকভাবে কাজ করা গুরুত্বপূর্ণ?

এইচটিএমএল-এ সুন্দর চেহারার ইউআরএল পরিবেশন করার কিছু জাদু উপায় আছে কি?

http://www.example.com/düsseldorf?neighbourhood=Lörick

অক্ষত অক্ষর বিশেষ অক্ষর সঙ্গে + আটকানো যাবে, কিন্তু পুরানো ক্লায়েন্টগুলিতে পুনরায় ব্যবহার করার সময় সঠিকভাবে কাজ?


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

উত্তর:


126

শতাংশ এনকোডিং ব্যবহার করুন। আধুনিক ব্রাউজারগুলি ডিসপ্লে এবং পেস্ট সম্পর্কিত সমস্যাগুলির যত্ন নেবে এবং এটিকে মানব-পঠনযোগ্য করে তুলবে। E. g। http://ko.wikipedia.org/wiki/ 위키 백과: 대문

সম্পাদনা করুন: আপনি যখন ফায়ারফক্সে এই জাতীয় url অনুলিপি করেন, তখন ক্লিপবোর্ডটি শতাংশ-এনকোডযুক্ত ফর্মটি ধারণ করবে (যা সাধারণত ভাল জিনিস) তবে আপনি যদি এর কোনও অংশই অনুলিপি করেন তবে তা বিনা কোড থেকে যাবে।


বাহ, তুমি ঠিক বলেছ! যদি আপনি%-এনকোডযুক্ত ইউআরএল কেটে না ফেলে থাকেন তবে ফায়ারফক্স এটিকে প্রদর্শনের জন্য সঠিক জিনিসটিতে পরিণত করবে।
ডিন হার্ডিং

বাহ, আমি এই সম্পর্কে অবগত ছিল না। সম্ভাবনা এটিই সেরা সমাধান!
পেক্কা

33
@ ডিয়ান এটি মোটামুটি সাম্প্রতিক পরিবর্তন - ২০০৫ সালে সমস্ত আন্তর্জাতিক উইকিপিডিয়াকে বাস্তব% 6D% 65% 73% 73 এর মতো দেখায়।
রোমান স্টারকভ

2
আপনি unencoded হল UTF-8 URL গুলি, যথা ব্যবহার করতে পারেন Iris মধ্যে HTML5 এর এখন দ্বারা নথি। আপনি যদি এটি করেন তবে সমস্ত বড় ব্রাউজারগুলি এটি বুঝতে এবং তাদের ঠিকানার বারে এটি সঠিকভাবে প্রদর্শন করবে।
অলিভার

আধুনিক ব্রাউজারগুলি অনুরোধ লাইনে সার্ভারগুলিতে কোন বাইটগুলি প্রেরণ করে GET /images/logo.png HTTP/1.1? তারা কি সবসময় ইউআরএলকে শতাংশ-এনকোড করে?
ফ্লিম

87

টিজিআর কী বলেছে। পটভূমি:

http://www.example.com/düsseldorf?neighbourhood=Lörick

এটি কোনও ইউআরআই নয়। কিন্তু এটা হয় একটি আইআরআই

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

কোনও আইআরআইকে ইউআরআইতে এনকোড করতে, পাথ এবং ক্যোয়ারির অংশগুলি নিন, ইউটিএফ -8-এনকোড করুন নন-এএসসিআইআই বাইটগুলি শতাংশ-এনকোড করুন:

http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick

আইআরআই-এর হোস্টনাম অংশে যদি অ-এসসিআইআই অক্ষর থাকে তবে, যেমন। পরিবর্তে পুনিকোডhttp://例え.テスト/ ব্যবহার করে এগুলি এনকোড করা হয়েছে।

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

http://en.wikipedia.org/wiki/ɸ

একজনের ব্রাউজার যার আচরণটি অনাকাঙ্ক্ষিত এবং সর্বদা সুন্দর আইআরআই সংস্করণ প্রদর্শন করে না তা হ'ল ...

...তুমি ভাল জানো.


31
আমি জানি. একদিন, কাউকে একটি বড় ক্লাব নিতে হবে এবং সেই সমস্ত লিংক বিকাশকারীকে মাথায় .ুকতে হবে। চমৎকার পটভূমি তথ্যের জন্য ধন্যবাদ।
পেক্কা

2
@ ববিন্স এবং একটি বট (২০১৩-তে দ্রুত এগিয়ে) যা অ আইআরআই ইউআরআই পরিচালনা করতে পারে না তা হ'ল ... ... ভাল, আপনি জানেন: বিংবোট! চিত্রে যান.
টম হ্যারিসন

1
এইচটিএমএল 5 অবশেষে আইআরআই সমর্থন করে। এই সম্পর্কিত আরও তথ্যের সাথে সম্পর্কিত প্রশ্নের উত্তর পাওয়া যাবে ।
অলিভার

5
Re: IE সর্বদা সুন্দর আইআরআই প্রদর্শন করে না - তারা ব্যবহারকারীদের হোমোগ্রাফিক-ভিত্তিক ফিশিং আক্রমণ থেকে রক্ষা করছে। পরীক্ষা করে দেখুন w3.org/International/articles/idn-and-iri (বিশেষভাবে অধ্যায় 'ডোমেন নাম-এবং ফিশিং') এবং blogs.msdn.com/b/ie/archive/2006/07/31/684337.aspx
কোডিংআউটলৌড

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

16

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

http://stackoverflow.com/questions/2742852/unicode-characters-in-urls

তবে, আপনি শনাক্তকারীর ভুল পরে অংশটি পেয়ে গেলে সার্ভারটি আসলে যত্ন করে না, তাই এটি কাজ করে:

http://stackoverflow.com/questions/2742852/ こ れ は, こ れ を 日本語 の テ キ ス ト で す

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


হুমমম, খুব চতুর ভাবনা! এটা এখনও হতে পারে যে কিছু ক্লায়েন্ট কোন ব্যাপার অক্ষর উপর শ্বাসরোধ যেখানে তারা স্ট্রিং মধ্যে অবস্থিত হয়, কিন্তু এটা হবে যখন কপি + একটি URL টি, যা আমি মনে করি সবচেয়ে গুরুত্বপূর্ণ অংশ পেস্ট সাধারণ garbling সঙ্গে সব সমস্যার নিষ্কাশন। এসও এর ইউআরএলটি এখনও সেভাবে দেখেনি। ধন্যবাদ!
পেক্কা

ভাল, এটি এখনও শব্দের "প্রশ্নগুলি" অপরিকল্পিত রেখে গেছে, হ্যাশ # এর পরেও এমন স্টাফ রয়েছে যা পুরো ইউআরএল অনুসরণ করে, খুব সুন্দর কৌশল!
ইভজেনি

4
の 翻 訳 機 を 使 て そ の の 日本語 の ইউআরএল を っ っ た ね。
গ্লুটেক্সো

6

এটি একটি ভাল ধারণা কিনা তা নিশ্চিত নন তবে অন্যান্য মন্তব্যে যেমন উল্লেখ করা হয়েছে এবং আমি এটি ব্যাখ্যা করার সাথে সাথে অনেকগুলি ইউনিকোড অক্ষর এইচটিএমএল 5 ইউআরএলে বৈধ

উদাহরণস্বরূপ, hrefদস্তাবেজগুলি http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :

একটি এবং ক্ষেত্রের উপাদানগুলির মধ্যে href বৈশিষ্ট্যের একটি মান অবশ্যই থাকা উচিত যা স্পেস দ্বারা ঘিরে সম্ভাব্য চারপাশে একটি বৈধ URL।

তারপরে "বৈধ ইউআরএল" এর সংজ্ঞাটি http://url.spec.whatwg.org/ এ নির্দেশ করে , যা ইউআরএল কোড পয়েন্টগুলি এভাবে সংজ্ঞায়িত করে :

ASCII বর্ণমালা, "!", "$", "&", "" "," (",") "," * "," + ",", "-", "।", "/" , ":", ";", "=", "?", "@", "_", "~" এবং কোডগুলি U + 00A0 থেকে U + D7FF, U + E000 থেকে U + FDCF এর মধ্যে রয়েছে , U + FDF0 থেকে U + FFFD, U + 10000 থেকে U + 1FFFD, U + 20000 থেকে U + 2FFFD, U + 30000 থেকে U + 3FFFD, U + 40000 থেকে U + 4FFFD, U + 50000 থেকে U + 5FFFD, U +60000 থেকে U + 6FFFD, U + 70000 থেকে U + 7FFFD, U + 80000 থেকে U + 8FFFD, U + 90000 থেকে U + 9FFFD, U + A0000 থেকে U + AFFFD, U + B0000 থেকে U + BFFFD, U + C0000 U + CFFFD, U + D0000 থেকে U + DFFFD, U + E1000 থেকে U + EFFFD, U + F0000 থেকে U + FFFFD, U + 100000 থেকে U + 10FFFD

"ইউআরএল কোড পয়েন্টস" শব্দটি এর পরে পার্সিং অ্যালগরিদমের কয়েকটি অংশে ব্যবহৃত হয়, যেমন আপেক্ষিক পথের অবস্থার জন্য :

সি যদি কোনও ইউআরএল কোড পয়েন্ট না হয় এবং "%" না হয়, পার্স ত্রুটি।

এছাড়াও বৈধতা প্রদানকারী http://digator.w3.org/ যেমন ইউআরএল "你好"পাস করে, এবং স্পেসের মতো অক্ষরযুক্ত URL গুলির জন্য পাস করে না"a b"

সম্পর্কিত: কোন অক্ষরগুলি একটি URL টি অবৈধ করে?


তবে এইচটিটিপি অনুরোধটি সঠিক করার সময় উভয়ই ইউআরএল ( "你好"এবং "a b") শতাংশই এনকোড করতে হবে?
উত্কু

@ উটকু এর জন্য "a b"আমি যথেষ্ট নিশ্চিত হ্যাঁ যেহেতু উপরের অনুমোদিত তালিকায় স্থান নেই। কারণ "你好", শতাংশে এনকোড করা অবশ্যই ভাল ধারণা, তবে এটি "বাস্তবায়ন যথেষ্ট ভাল নয়" বা "স্ট্যান্ডার্ড তাই বলে" এর একটি প্রশ্ন কিনা তা আমি জানি না। এইচটিএমএল স্ট্যান্ডার্ড মনে হয় এই অক্ষরগুলিকে অনুমতি দেয়। তবে আমি মনে করি এটি এইচটিটিপি মান দ্বারা নির্দিষ্ট করা হয়েছে, এইচটিএমএল নয়। আরও দেখুন: stackoverflow.com/questions/912811/...
সিরো Santilli郝海东冠状病六四事件法轮功

হ্যাঁ, আমি এইচটিটিপি স্ট্যান্ডার্ড নিয়ে ভাবছিলাম, এইচটিএমএল নয়।
উত্কু

5

যেহেতু এই সমস্ত মন্তব্য সত্য, আপনার অবশ্যই লক্ষ্য করা উচিত যে আইসিএএনএন যতক্ষণ না আরবি (ফারসি) এবং চীনা অক্ষরগুলিকে ডোমেন নাম হিসাবে নিবন্ধিত করার অনুমোদন দিয়েছে, ব্রাউজার তৈরির সমস্ত সংস্থা (মাইক্রোসফ্ট, মজিলা, অ্যাপল, ইত্যাদি) করতে হবে কোনও এনকোডিং ছাড়াই ইউআরএলগুলিতে ইউনিকোড সমর্থন করে এবং সেগুলি গুগল ইত্যাদির দ্বারা অনুসন্ধানযোগ্য হওয়া উচিত etc.

সুতরাং এই সমস্যাটি ASAP সমাধান করবে।


2
@ নাসার: সত্য - আমাদের এখন জার্মান ডোমেনগুলিতেও বিশেষ অক্ষর রয়েছে - তবে সেগুলি পুনাইকোড ব্যবহার করে ASCII অক্ষরে এনকোডড রয়েছে । তারা বড় ব্রাউজারগুলিতে কাজ করার বিষয়ে নিশ্চিত হওয়ার পরে, প্রতিটি এইচটিটিপি ক্লায়েন্ট লাইব্রেরি এবং বিদেশী অ্যাপ্লিকেশনটি আনইনকোডযুক্ত ইউনিকোড অক্ষরগুলি মোকাবেলা করতে সক্ষম হওয়ার আগে অনেক দিন হবে।
পেক্কা

@Pekka, আমি নিশ্চিত নই কিন্তু আমি শুনেছি, ব্রাউজার সব 2010 এর 4 র্থ প্রান্তিকে এ ইউনিকোড URL টি সমর্থন করার জন্য আছে (আমি নিশ্চিত)
নাসের Hadjloo

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

1

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

যদিও একটি নেতিবাচক দিক রয়েছে, শতাংশ-এনকোডেড অক্ষরগুলি মূল চরিত্রের চেয়ে দীর্ঘ হয়, ফলস্বরূপ সম্ভবত সত্যই দীর্ঘ URL গুলো দেখা দেয়। তবে কেবল এটিকে উপেক্ষা করার চেষ্টা করুন বা একটি ইউআরএল শর্টনার ব্যবহার করুন (আমি এই ক্ষেত্রে goo.gl কে সুপারিশ করব , যা একটি 13-অক্ষরের দীর্ঘ URL তৈরি করে)। এছাড়াও, আপনি যদি কোনও গুগল অ্যাকাউন্টের জন্য নিবন্ধন করতে না চান তবে বিট.লাই চেষ্টা করুন (বিট.ইলি কিছুটা দীর্ঘ ইউআরএল তৈরি করেন, দৈর্ঘ্যটি 14 অক্ষর সহ)।


আমি কেন এখনও অপ্রচলিত কম্পিউটারগুলিকে সমর্থন করতে চাই যা এখনও উইন্ডোজ এক্সপি ব্যবহার করে?
ম্যাটিউস ফিলিপ

0

আমার জন্য এটি সঠিক উপায়, এটি কেবলমাত্র কাজ করেছে:

    $linker = rawurldecode("$link");
    <a href="<?php echo $link;?>"   target="_blank"><?php echo $linker ;?></a>

এটি কাজ করেছে এবং এখন লিঙ্কগুলি সঠিকভাবে প্রদর্শিত হবে:

http://newspaper.annahar.com/article/121638 -معرض - جوزف-حرب-في-غاليري-جانين-ربيز-لوحاته-الجدية-تبحث-وتكتشف-وتفرض-الاحترام

লিঙ্কটি পাওয়া গেছে:

http://www.galeriejaninerubeiz.com/newsite/news


2
"লিঙ্কগুলি সঠিকভাবে প্রদর্শিত হয়" - ব্যতীত স্ট্যাকওভারফ্লো মার্কডাউন পার্সার ইউআরএলগুলি উদ্দেশ্য হিসাবে ব্যাখ্যা করে না!
মিঃউইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.