2014-04-24 2 views

उत्तर

3

मैं locale -a चलाने के लिए और स्ट्रिंग यह आउटपुट का उपयोग करेंगे के लिए। ओएस एक्स 10.9 पर, मुझे de_DE.UTF-8 मिलता है। डेबियन 6 पर, मुझे मिलता है। dpkg-reconfigure locales दूसरी तरफ de_DE.UTF-8 का उपयोग करता है। सबसे सुरक्षित तरीका शायद setlocale के वापसी मूल्य की जांच करना है और यदि यह विफल रहता है तो विभिन्न प्रकारों को आजमाएं।

उसने कहा, सभी संस्करणों को आम तौर पर काम करना चाहिए: डैश, अपरकेस या लोअरकेस के साथ या बिना।

+0

बिल्कुल सही। मेरे पास डेबियन जीएनयू/लिनक्स 6.0.9 (निचोड़) 'और 'लोकेल-ए' आउटपुट' de_DE.utf8' है - सौ अन्य लोगों के बीच। –

+1

@ व्हाट 'लोकेल-ए | grep -i de_de' मदद चाहिए। – sjas

2

एन्कोडिंग का नाम यूटीएफ -8 है।

लेकिन इस मामले में दोनों मापदंडों सही कर रहे हैं और वे एक ही काम कर रहे हैं आप

0

प्रोग्रामिंग को हल करने के लिए यहां एक व्यावहारिक समाधान है। जब setlocale विफल रहता है, तो यह झूठा होता है।

if (!setlocale(LC_ALL, str_replace('utf-8', 'utf8', $locale)) 
&& !setlocale(LC_ALL, str_replace('utf8', 'utf-8', $locale))) { 
    /* fail gracefully */ 
} 
/* your locale has been set up properly 

मेरे मामले में एक हमारे Macs पर काम करेगा और अन्य लिनक्स सीआई बक्से पर काम करेगा, तो यह समाधान परीक्षण दोनों को पास कर देता है।

बीटीडब्ल्यू; एलसी_ओएल से सावधान रहें। सबसे कमजोर दायरे के लिए लोकेल को सेट करें जिसकी आपको आवश्यकता है।

0

आप वास्तव में setLocale() पर मानों की एक सरणी पास कर सकते हैं। मैंने ओएसएक्स पर विकास करते समय और लिनक्स पर चल रहे होस्टिंग पर परीक्षण करते समय इस समस्या में भाग लिया है। तो अब मैं यह करता हूं: setLocale(LC_ALL, ["de.utf", "de_DE.utf", "de_DE.UTF-8", "de", "de_DE"]) मिलान करने वाला पहला व्यक्ति एक जाना है। डॉक्स: https://secure.php.net/setlocale

संबंधित मुद्दे