अपाचे के लिए UTF-8 में डिफ़ॉल्ट एन्कोडिंग कैसे बदलें?


138

मैं एक होस्टिंग कंपनी का उपयोग कर रहा हूं और यह फाइलों को एक निर्देशिका में सूचीबद्ध करेगा यदि फ़ाइल index.htmlनहीं है, तो यह डिफ़ॉल्ट एन्कोडिंग के रूप में iso-8859-1 का उपयोग करता है।

यदि सर्वर Apache है, तो क्या इसके बजाय UTF-8 को डिफ़ॉल्ट के रूप में सेट करने का कोई तरीका है?

अद्यतन: इसके अलावा मुझे पता चला कि यह वास्तव में HTML 3.2 के एक DOCTYPE का उपयोग कर रहा है और फिर वहाँ बिल्कुल भी परेशान नहीं है ... इसलिए यह कोई एन्कोडिंग सेट नहीं कर रहा है। लेकिन क्या यूटीएफ -8 का उपयोग करने के लिए इसे बदलने का कोई तरीका है?

जवाबों:


176

Httpd.conf में जोड़ें (या यदि यह पहले से मौजूद है तो बदल दें):

AddDefaultCharset utf-8

6
फ़ाइल में कोई भी इसे कहीं भी जोड़ता है?
systemovich

5
@ जीऑफ्रे हां। यदि यह पहले से ही नहीं है, तो आप इसे कहीं भी रख सकते हैं। हालाँकि, मैं आमतौर पर हर "कस्टम" निर्देश को कई कारणों से फ़ाइल के निचले भाग में रखता हूं (पूर्व-मौजूदा निर्देशों, आदेश को ओवरराइड करके, और आसानी से यह देखने के लिए कि मैंने स्टॉक कॉन्फिगर से क्या परिवर्तन किया है)।
मार्टिनॉड एफएफ़

6
AddDefaultCharset utf-8 .htaccess जोड़ें - ने मेरे लिए एक आकर्षण का काम किया। (यदि आपके पास httpd.conf तक पहुंच नहीं है)
richardwhitney

क्या यह मामला संवेदनशील है?
माइक स्टोडर्ट

6
चूंकि यह उत्तर 2009 से है: उबंटू 18 में, आप इस कॉन्फ़िगरेशन को बदलते हैं/etc/apache2/conf-available/charset.conf
वुड्रोशगेरु

55

इसे अपने में जोड़ें .htaccess:

IndexOptions +Charset=UTF-8

या, यदि आपके पास व्यवस्थापक अधिकार हैं, तो आप इसे संपादित करके httpd.confऔर जोड़कर विश्व स्तर पर सेट कर सकते हैं :

AddDefaultCharset UTF-8

(आप उपयोग कर सकते हैं AddDefaultCharsetमें .htaccessभी है, लेकिन यह अपाचे-जनरेटेड निर्देशिका लिस्टिंग को प्रभावित नहीं करेगा तरीका है कि।)


4
यह httpd.conf फ़ाइल को संशोधित करने की तुलना में एक महान समाधान और कम आक्रामक है।
एंड्रयू स्विफ्ट

1
मेरे सर्वर पर, .htaccessसभी उपनिर्देशिकाओं को भी प्रभावित कर सकता है, शायद अपाचे किसी भी .htaccessमूल निर्देशिका के लिए वेबसाइट फ़ोल्डर की रूट डायरेक्टरी के लिए सभी तरह से
देखेगा

2
हां, यह .htaccessसभी सर्वरों पर काम करता है - यह सभी उपनिर्देशिकाओं को भी प्रभावित करता है। हालाँकि, अपाचे-जनरेटेड डायरेक्टरी लिस्टिंग पेज यूटीएफ -8 को .htaccess(AFAIK) का उपयोग करने के लिए मजबूर नहीं किया जा सकता है ।
मैथियास ब्येनेंस

9
कृपया ध्यान दें कि फ़ाइलों के माध्यम से सर्वर की सेटिंग बदलना .htaccessआमतौर पर बुरा अभ्यास है। जब सर्वर सेटिंग्स को विभिन्न फ़ाइलों में वितरित किया जाता है, तो बग को ट्रैक करना कठिन हो जाता है। थोड़ी सी भी प्रदर्शन हिट है: प्रत्येक अनुरोधित फ़ाइल के साथ, अपाचे को निर्देशिका की .htaccessफ़ाइल और .htaccessमूल निर्देशिका की सभी फ़ाइलों को पढ़ना होगा । .htaccessइसलिए केवल या तो निर्देशिका विशिष्ट सेटिंग्स के लिए उपयोग किया जाना चाहिए (उदाहरण के लिए विशिष्ट निर्देशिका तक पहुँच को रोकना) या जब व्यवस्थापक अधिकारों को प्राप्त करने की कोई संभावना नहीं है।
रोबर्ट सेप

2
ऊपर मतदान, IndexOptions + चारसेट = UTF-8 ने मेरे लिए चाल चली, धन्यवाद!
mTorres

28

देखें AddDefaultCharset निर्देशक , AddCharset निर्देशक , और इस लेख

AddDefaultCharset utf-8

लेकिन मुझे अभी और फिर चीनी पात्रों का उपयोग करना है। पहले, मैंने चीनी पात्रों का यूनिकोड कोड में अनुवाद किया और इसे &#हैक का उपयोग करके दस्तावेज़ में शामिल किया । लेकिन यह केवल कुछ अक्षरों वाले पृष्ठ के लिए उपयोगी है।

ऐसा करने का एक बेहतर तरीका है: फ़ाइल नाम में चारसेट जानकारी को एन्कोड करें, और अपाचे उस के आधार पर उचित एन्कोडिंग हेडर का उत्पादन करेगा। यह संभव AddCharsetफ़ाइल के रूप में, नीचे फ़ाइल में लाइनों के लिए धन्यवाद है :

conf/httpd.conf:

AddCharset UTF-8 .utf8

इसलिए यदि आपके पास एक फ़ाइल है जिसका नाम समाप्त हो जाता है .html.utf8, तो अपाचे पृष्ठ की सेवा करेगा जैसे कि यह UTF-8 में एन्कोड किया गया है और हेडर में उचित वर्ण-एन्कोडिंग निर्देश को डंप करेगा।


23

प्लेस AddDefaultCharset UTF-8में /etc/apache2/conf.d/charset। वास्तव में, यह पहले से ही है। आपको पूर्ववर्ती को हटाकर इसे अनलॉक्ड करना होगा #


2
जैसी कोई फाइल नहीं है /etc/apache2/conf.d/charset। यह आपके वितरण द्वारा एक कस्टम शामिल फ़ाइल है। के रूप में किसी भी अन्य फ़ाइल है कि नहीं है httpd.conf
Evi1M4chine

1
/etc/apache2/conf-enabled/charset.confमेरे वितरण पर इसकी (Ubuntu 16.4)। भी काम नहीं किया।
अलाटर

23

.Htaccess में इस लाइन को जोड़ें:

AddCharset utf-8 .html .css .php .txt .js

यह उन लोगों के लिए है, जिनके पास अपने सर्वर की गोपनीय फाइल तक पहुंच नहीं है। जब अन्य प्रयास विफल हो जाते हैं, तो यह केवल एक और बात है।

जहां तक ​​.htaccess के इस्तेमाल को लेकर प्रदर्शन के मुद्दे हैं, मैंने यह नहीं देखा है। मेरे विशिष्ट पृष्ठ लोड समय 150-200 mS के साथ या बिना .htaccess के हैं

यदि आपका पृष्ठ सही तरीके से प्रस्तुत नहीं होता है तो क्या अच्छा प्रदर्शन है। अधिकांश साझा किए गए सर्वर उपयोगकर्ता फ़ाइल को एक्सेस करने की अनुमति नहीं देते हैं जो कि एक वर्ण सेट जोड़ने के लिए पसंदीदा स्थान है।


मैं समझा नहीं सकता, लेकिन केवल यही समाधान मेरे लिए काम करता है। यही कारण है कि
स्काल्गर वैग

1
जैसा कि @Robbert ने पहले उल्लेख किया है - यदि आप पहले से .htaccessफ़ाइलों का उपयोग नहीं कर रहे हैं , तो अभी शुरू न करें। प्रदर्शन और प्रशासनिक कारण हैं कि यह एक बुरा विचार (टीएम) क्यों है
सिग्नल 15

जब आप एक्सटेंशन शामिल नहीं करते हैं तो AddCharset सामग्री प्रकार पाठ / HTML और पाठ / सादे पर लागू होता है।
Misunderstood

यह मेरे लिए काम करता है जबकि उपरोक्त सभी awnsers ने नहीं किया। +1
एल्टर

स्वीकृत उत्तर केवल टेक्स / html और पाठ / सादे को प्रभावित करता है: httpd.apache.org/docs/2.4/mod/core.html#adddefaultcharset
TacoV

10

मुझे यकीन नहीं है कि आपके पास अपाचे कॉन्फिगर (httpd.conf) तक पहुंच है या नहीं, लेकिन आपको AddDefaultCharset डायरेक्टिव सेट करने में सक्षम होना चाहिए। देख:

http://httpd.apache.org/docs/2.0/mod/core.html

Mod_mime.c मॉड्यूल की तलाश करें और सुनिश्चित करें कि निम्नलिखित सेट है:

AddDefaultCharset utf-8 

या समकक्ष Apache 1.x डॉक्स ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset )।

हालाँकि, यह केवल तभी काम करता है जब "प्रतिक्रिया सामग्री-प्रकार पाठ / सादा या पाठ / html हो"।

आपको यह भी सुनिश्चित करना चाहिए कि आपके पृष्ठों में चारसेट सेट भी हो। अधिक जानकारी के लिए इसे देखें:

http://www.w3.org/TR/REC-html40/charset.html


8

यह अप्रयुक्त है लेकिन शायद काम करेगा।

आपकी .htaccess फ़ाइल में:

<Files ~ "\.html?$">  
     Header set Content-Type "text/html; charset=utf-8"
</Files>

हालाँकि, इसके लिए सर्वर पर mod_headers की आवश्यकता होगी।


मेरे लिए यह काम किया, जबकि चुना समाधान नहीं किया। धन्यवाद! वास्तव में, मुझे इसे <Files>टैग में लपेटना भी नहीं था ।
जेरेमिया

8

पूर्णता के लिए, उबंटू के अपाचे 2 पर, आप डिफॉल्ट चारसेट को charset.conf में मिलेंगे।

लाइन को रद्द करें

AddDefaultCharset UTF-8

3

जहां सभी HTML फाइलें UTF-8 में हैं और सामग्री प्रकार के लिए मेटा टैग नहीं हैं, मैं केवल इन निर्देशों को अपाचे 2.4 द्वारा दोनों निर्देशों को जोड़कर भेजे जाने के लिए आवश्यक डिफ़ॉल्ट सेट करने में सक्षम था:

AddLanguage ru .html
AddCharset UTF-8 .html

3

केवल एक संकेत यदि आपके पास utf-8 में लंबे फ़ाइल नाम हैं, तो डिफ़ॉल्ट रूप से उन्हें 20 बाइट्स तक छोटा कर दिया जाएगा, इसलिए ऐसा हो सकता है कि अंतिम चरित्र "आधे में कट" हो सकता है और इसलिए ठीक से पहचाना नहीं गया है। तो आप निम्नलिखित सेट करना चाहते हो सकता है:

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth सेटिंग आपके फ़ाइल नामों को छोटा करने से रोकेगी, जिससे वे ठीक से प्रदर्शित और पठनीय बनेंगे।

जैसा कि अन्य उपयोगकर्ताओं ने पहले ही उल्लेख किया है, इसे या तो ( httpd.confया apache2.confयदि आपके पास व्यवस्थापक अधिकार हैं) या .htaccess(यदि आप नहीं हैं) में जोड़ा जाना चाहिए ।


2

बस इसे खाली छोड़ दें: 'default_charset' in WHM :::::: default_charset =''

ps - WHM में --------) होम »सेवा विन्यास» PHP विन्यास संपादक ----) 'उन्नत मोड' पर क्लिक करें ----) 'default_charset' ढूंढें और इसे खाली छोड़ दें ---- बस कुछ नहीं, utf8 नहीं, आईएसओ नहीं


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.