2016-03-07 11 views
9

यह एक सर्वर पर utf8 वर्ण क्यों लौटाता है लेकिन दूसरे पर नहीं? कुछ फ़ाइल नाम æø और å .. कुछ वातावरण UTF8 वर्ण मुद्रित कर रहे हैं मेंopendir और readdir ref utf8

तरह यूनिकोड वर्ण होते हैं और कुछ iso वर्ण में मुद्रित कर रहे

header('content-type: text/plain'); 
$handle = opendir("./dir"); 
while($readdir = readdir($handle)){ 
    echo "$readdir\n"; 
} 

उत्पादन Content-Type:text/plain;charset=UTF-8

Retursvar 2 med fejl p� debiteringsniveau.xml 
Retursvar 2 med fejl på debiteringsniveau.xml 

एक ही स्थान हैं दोनों प्रणालियों (यूटीएफ 8)

dpkg-reconfigure locales 
पर स्थापित
+0

क्या अंतर्निहित फाइल सिस्टम प्रयोग में है? क्या यह सर्वर पर उपयोग में एक ही फाइल सिस्टम है जो अलग-अलग परिणाम देता है? –

+0

सभी सिस्टम डेबियन जेसी हैं - एक ही distros – clarkk

+0

ठीक है, अगला प्रश्न - आप सामग्री-प्रकार कैसे सेट कर रहे हैं। मुझे लगता है कि आप एक वेबसर्वर के माध्यम से चल रहे हैं और ब्राउज़र में देख रहे हैं? सामग्री प्रकार 'हेडर()' या इनलाइन एचटीएमएल के माध्यम से सेट है ?? –

उत्तर

0

यह एक PHP प्रश्न नहीं है, यह एक सिस्टम प्रश्न है। समस्या शायद सिस्टम में से किसी एक पर गलत कॉन्फ़िगर किए गए लोकेशंस से उत्पन्न होती है। यदि आप locale चलाते हैं तो आप जांच सकते हैं कि वर्तमान में कौन से स्थान इंस्टॉल हैं। यदि लोकेल को यूटीएफ -8 के रूप में चिह्नित नहीं किया गया है तो यह आपकी समस्या होगी। सही यूटीएफ -8 लोकेल स्थापित करने से समस्या ठीक हो जाएगी।

+0

दोनों सिस्टमों पर सटीक वही स्थान स्थापित हैं .. यूटीएफ 8 – clarkk

2

आप पाते हैं कि वेब सर्वर प्रत्येक सिस्टम पर एक अलग लोकेल के तहत चल रहा है।

इस अपने वेब सर्वर के माध्यम से निम्नलिखित php चलाने का निर्धारण करने के लिए:

<?php 
system("locale"); 

संभावना या तो 'UTF8' स्थान या 'सी' में चल रहा है सही वर्ण लौटने वेबसर्वर हैं।

वेबसावर का उपयोग करने वाले लोकेल को विभिन्न स्थानों पर सेट किया जा सकता है। या तो सिस्टम विस्तृत लोकेल का उपयोग करके - या एक सेवा विशिष्ट एक। आपको शायद किसी भी अंतर के कारण की जांच करनी होगी और यह तय करना होगा कि क्या आपके सिस्टम के विस्तृत लोकेल या बस वेबसर्वर को अपडेट करना है या नहीं।

डेबियन पर, सिस्टम विस्तृत स्थान परिवर्तन

dpkg-reconfigure locales 

संकेतों का उपयोग करते हुए और निम्नलिखित बदला जा।

वैकल्पिक रूप से, सेवा विशिष्ट स्थानों के लिए। सेवा शुरू करने से पहले सेवा init स्क्रिप्ट में आवश्यक एक 'LANG' पर्यावरण चर सेट करें। संभवतः एक सेवा विशिष्ट कॉन्फ़िगरेशन फ़ाइल है जिसे आप वेबसर्वर अपग्रेड की स्थिति में परिवर्तन को जारी रखने के लिए भी खोज सकते हैं।

+0

दोनों ही सिस्टम दोनों पर सटीक वही स्थान स्थापित हैं .. दोनों यूटीएफ 8 – clarkk

+0

स्पष्टीकरण के लिए - सिस्टम लोकेल वेबसेवर या किसी अन्य प्रक्रिया के लिए अलग हो सकता है के तहत चल रहा है यह निर्धारित करने के लिए आप किस विधि का उपयोग करते हैं कि दोनों वेबसर्वर यूटीएफ -8 के रूप में चल रहे हैं? –

-1

अपने शीर्षक में UTF-8 एन्कोडिंग सेट करने के लिए प्रयास करें:

header('content-type: text/plain; charset:utf-8'); 
संबंधित मुद्दे