ডাব্লু 3 সি বৈধকরণকারীর বৈধ যা পিএইচপি ব্যবহার করে এইচটিটিপি শিরোনামটি ইউটিএফ -8 এ কীভাবে সেট করবেন?


319

আমার বেশ কয়েকটি পিএইচপি পৃষ্ঠাগুলি নিম্নলিখিত কোড সহ HTML পৃষ্ঠাগুলিতে বিভিন্ন জিনিস প্রতিধ্বনি করছে ।

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

যাইহোক, আমি যখন ডাব্লু 3 সি যাচাইকারী ব্যবহার করে যাচাই করি তখন তা সামনে আসে:

HTTP শিরোনামে নির্দিষ্ট অক্ষর এনকোডিং (iso-8859-1) উপাদান (utf-8) এর মান থেকে পৃথক।

আমি পিএইচপি-তে বেশ নতুন, এবং আমি ভাবছিলাম যে এইচটিএমএল ফাইলগুলির সাথে মেলে পিএইচপি ফাইলগুলির জন্য আমি শিরোনামটি পরিবর্তন করতে পারি এবং না উচিত।

উত্তর:


897

headerHTTP শিরোনাম সংশোধন করতে ব্যবহার করুন :

header('Content-Type: text/html; charset=utf-8');

কোনও আউটপুট ক্লায়েন্টের কাছে প্রেরণের আগে এই ফাংশনটি কল করার নোট। অন্যথায় শিরোনামটি খুব প্রেরণ করা হয়েছে এবং আপনি অবশ্যই এটি আর পরিবর্তন করতে পারবেন না। আপনি এটি দিয়ে পরীক্ষা করতে পারেন headers_sent। আরও তথ্যের জন্য ম্যানুয়াল পৃষ্ঠাheader দেখুন ।


4
আমি কেবল যুক্ত করব যে আপনি যখন এইচটিটিপি শিরোনামটি সঠিকভাবে সেট করেন তখন আপনার <meta>আর কোনও ট্যাগ লাগবে না।
জন

3
@ জন: আমি উভয়ই ব্যবহার করব। এইচটিটিপি-সমতুল্য METAব্যবহৃত হয় যখন এইচটিএমএল ডকুমেন্টটি HTTP- র মাধ্যমে লোড করা হয় না (যেমন ডিস্ক থেকে)।
গম্বো

6
এটি কেবল তখনই কাজ করবে যদি আপনার পিএইচপি কার্যকর করা হয়, এটি স্ট্যাটিক পৃষ্ঠাগুলির জন্য করতে আপনার নিজের HTML ফাইলটি utf-8 হিসাবে সংরক্ষণ করা উচিত। এটি করার ফলে ফাইলের শুরুতে বিওএম অক্ষর utf-8 এনকোড যুক্ত হবে। বাইটস 0xEF, 0xBB, 0xBF ফাইলের শুরুতে যুক্ত হয়েছিল। বেশিরভাগ ওয়েব সার্ভার এটি লক্ষ্য করবে এবং উপযুক্ত শিরোনাম প্রয়োগ করবে। আসলে আপনার পিএইচপি ফাইলটি utf-8 হিসাবে সংরক্ষণ করা একই জিনিসটি সম্পাদন করবে।
রাহলি

1
@ জেরেমি ওয়ালটন: ইউটিএফ -8 বিওএম যুক্ত হয়েছে তা অগত্যা ঘটে না। আসলে এটি ইউটিএফ -8 এর জন্যও প্রয়োজনীয় নয় কারণ এটির জন্য কেবল একটি বাইট অর্ডার রয়েছে (তবে এটি ইউটিএফ -8 সনাক্ত করতে ব্যবহার করা যেতে পারে)।
গম্বো

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

32

প্রথমে নিশ্চিত করুন যে পিএইচপি ফাইলগুলি নিজেরাই ইউটিএফ -8 এনকোডযুক্ত।

মেটা ট্যাগটি কিছু ব্রাউজার দ্বারা উপেক্ষা করা হয়। আপনি যদি কেবল এএসসিআইআই-অক্ষর ব্যবহার করেন তবে তা যাই হোক না কেন।

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

header('Content-Type: text/html; charset=utf-8');

15

আপনার ওয়েব সার্ভারটি এমন কোনও HTTP শিরোনাম প্রেরণে সমস্যা যা আপনার সংজ্ঞায়িতটির সাথে মেলে না। কীভাবে সার্ভারটিকে সঠিক শিরোনাম প্রেরণ করতে হয় তার নির্দেশাবলীর জন্য, এই পৃষ্ঠাটি দেখুন

অন্যথায়, আপনি শিরোনামগুলি সংশোধন করতে পিএইচপি ব্যবহার করতে পারেন, তবে এই কোডটি ব্যবহার করে কোনও পাঠ্য আউটপুট দেওয়ার আগে এটি করতে হবে :

header('Content-Type: text/html; charset=utf-8');

পিএইচপি ব্যবহার করে শিরোনামগুলি কীভাবে প্রেরণ করা যায় সে সম্পর্কে আরও তথ্য শিরোনাম ফাংশনের ডকুমেন্টেশনে পাওয়া যায় ।


12

আপনি আরও ছোট উপায়ে ব্যবহার করতে পারেন:

<?php header('Content-Type: charset=utf-8'); ?>

আরএফসি 2616 দেখুন । এটি কেবল অক্ষর সেট নির্দিষ্ট করতে বৈধ।


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

1
আরএফসি 2616 এর অংশটি আমি খুঁজে পাচ্ছি না যা বলে যে সেভাবে নির্দিষ্ট করা বৈধ। Content-Type = "Content-Type" ":" media-typeএবংmedia-type = type "/" subtype *( ";" parameter )
AI0867

1
এটি কেবল চরসেট নির্দিষ্ট করার জন্য বৈধ নয়। এটি আরএফসি 2616 (যা যাই হোক অপ্রচলিত) বা আরএফসি 7231 (যা অপ্রচলিত নয়) বা অন্য কোনও আরএফসি অনুসারে বৈধ নয়। স্ট্যাকওভারফ্লো.com
৪৯৯৯৪০২০/২

10

সঠিক বাস্তবায়নের জন্য আপনার কয়েকটি সিরিজ পরিবর্তন করতে হবে।

ডাটাবেস (সংযোগের সাথে সাথেই):

mysql_query("SET NAMES utf8");

// Meta tag HTML (probably it's already set): 
meta charset="utf-8"
header php (before any output of the HTML):
header('Content-Type: text/html; charset=utf-8')
table-rows-charset (for each row):
utf8_unicode_ci

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

অবশেষে অক্ষরের এনকোডিং সেট করার জন্য সমস্ত জায়গার একটি সম্পূর্ণ তালিকা।
ফিলিপ ওভারটোনসিংগার রাইডলো

mysql_query ("SET নামস utf8"); আমার নির্বাচন জিজ্ঞাসা আমার জন্য সমস্যা ঠিক করার আগে। ধন্যবাদ :)
দীপক গোস্বামী

7

পিএইচপি অভ্যন্তরীণ এনকোডিং ব্যবহার করতে সেট আপ করা থাকলে স্বয়ংক্রিয়ভাবে শিরোনামগুলি পাঠায়:

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