2012-01-24 11 views
21

मैं ऐसी साइट पर काम कर रहा हूं जहां उपयोगकर्ता अंग्रेजी और फ्रेंच के बीच स्विच कर सकता है। पदों की तारीख को आउटपुट करने के लिए।php strftime फ्रेंच वर्ण

उपयोगकर्ता चुनता है फ्रेंच मैं का उपयोग करें:

setlocale(LC_ALL, 'fra_fra'); 

तो उत्पादन के लिए तारीख मैं का उपयोग करें:

<meta charset="utf-8"> 
:

strftime('%d %B %Y', strtotime($post->post_date)); 

मैं साथ UTF-8 में मेरी चारसेट है

मेरे पास समस्या है ¤ और अन्य के साथ उच्चारण प्रश्न चिह्न वाले काले हीरे के रूप में प्रदर्शित करें।

क्या इसे ठीक करने का कोई तरीका है?

+0

क्या आप इस पृष्ठ को सामान्य रूप से या केवल तिथियों में ही रखते हैं? – makriria

+0

यह केवल तारीखों में होता था। Utf8_enocde का उपयोग करके यह – ianckc

उत्तर

45

यह strftime फ़ंक्शन के साथ एक समस्या/बग प्रतीत होता है।

आप का उपयोग कर इसे हल कर सकते हैं:

$date_string = utf8_encode(strftime('%d %B %Y', strtotime($post->post_date))); 
+1

बिल्कुल सही! धन्यवाद। – Steffi

+0

बिल्कुल सही! मेरी समस्या भी तय की गई। दिनांक प्रारूप में एक उच्चारण था और इसे एक यूटीएफ 8 कोड के रूप में जोड़ना पड़ा। बदलना था: '% ई% बी% वाई%%% एम' से: '% ई% बी% वाई और agrave; % kh% m' – onemesh

+1

समस्या यह है कि 'utf8_encode' एक स्ट्रिंग पर है जो पहले से ही' utf-8' में है, accent _even more_ को गले लगाएगी। इसके अतिरिक्त, 'mb_detect_encoding' ने' fvvrier' की रिपोर्ट की है (जिसे 'फेवरियर' पढ़ना चाहिए) पहले से ही' utf-8' 'होना चाहिए। –

0

क्या आपने इसे हेडर पर जोड़ा है?

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

स्ट्रिंग के बारे में कई फ़ंक्शन बाइनरी सुरक्षित नहीं हैं, एक mb_xxxx समतुल्य है। तो इस http://php.net/manual/en/ref.mbstring.php – makriria

+0

पर विचार करें, मुझे mbstring फ़ंक्शंस के माध्यम से पढ़ा जाएगा धन्यवाद – ianckc

+0

utf-8 के साथ एक अक्षर दो बाइट्स है। आम तौर पर प्रश्न चिह्न वाले हीरे चरित्र का मतलब है कि एक चरित्र के दो बाइट। – makriria

11

सामग्री-प्रकार शीर्षलेख को कोड पृष्ठ को यूटीएफ -8 पर सेट करने की आवश्यकता है।

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

एक बार आप साथ पृष्ठ के लिए उत्पादन के लिए कुछ भी किया है जब से तुम हैडर बदल नहीं सकते गूंज या प्रिंट आप इसे पेज के शुरू में सेट सुनिश्चित करें।

ASCII कोड पृष्ठ पूरी तरह से यूटीएफ -8 में निहित नहीं है।

ASCII एक के साथ UTF-8 हैडर बदलें और आप देखेंगे कि पात्रों वर्तमान कोड पेज में शामिल नहीं हैं क्या होता है।

<?php 
header('Content-Type: text/html; charset=UTF-8'); 
//header('Content-Type: text/html; charset=ASCII'); 

$myDate = "Feb 23, 2011"; 

$locale = 'fr_FR.UTF-8'; 
setlocale(LC_ALL, $locale); 
echo strftime('%d %B %Y', strtotime($myDate)); 

$locale = 'en_US.UTF-8'; 
setlocale(LC_ALL, $locale); 
echo strftime('%d %B %Y', strtotime($myDate)); 
?> 
+0

अच्छी स्पष्टीकरण – konsolenfreddy

+12

'सेटलोकेल (एलसी_ALL,' fr_FR.UTF8 ');', और न केवल '' fr_FR '', यह मेरे लिए तय किया गया है। –

1
<?php 
    date_default_timezone_set('Europe/Istanbul'); 
    setlocale(LC_TIME,"turkish"); 
    echo date("d.m.Y").' - '.iconv("ISO-8859-9","UTF-8",strftime('%A')); 
?> 

// 2015/11/06 - Perşembe

1

आप UTF8 एन्कोडिंग के साथ अपने पृष्ठ प्रदर्शित हैं, तो आप strftime से बाहर UTF8 प्राप्त करना चाहते हैं।

यदि php का charset utf8 है, तो आप खाना बना रहे हैं। यदि नहीं, तो आप कर सकते हैं:

  • utf8encode() स्ट्रेटटाइम का आउटपुट।

  • संलग्न '.utf8' अपने स्थान के बयान पर अगर यह स्थान setlocale(LC_ALL, 'fr_FR.utf8')

  • परिवर्तन php के डिफ़ॉल्ट चारसेट में के रूप में आपके सिस्टम पर स्थापित किया गया है, अपने php.ini या अपने .htaccess

3
में लाइन AddDefaultCharset UTF-8 डालकर

लोकेल अलग-अलग एन्कोडिंग में आते हैं! आप यूटीएफ -8 का उपयोग करने के रूप में अपनी साइट का विज्ञापन कर रहे हैं, लेकिन strftime एक यूटीएफ -8 एन्कोडेड स्ट्रिंग नहीं लौटाता है, क्योंकि आपके द्वारा चुना गया लोकेल यूटीएफ -8 लोकेल नहीं है। आपके सिस्टम की जाँच करें तुम्हारे पास क्या है स्थलों, जैसे: आप अपने स्थान के लिए UTF-8 संस्करण नहीं है, तो

setlocale(LC_ALL, 'fr_FR.UTF-8'); 

:

$ locale -a | grep fr_FR 
fr_FR 
fr_FR.ISO8859-1 
fr_FR.ISO8859-15 
fr_FR.UTF-8 

फिर अपने स्थान के लिए UTF-8 संस्करण, जैसे चुनें उपलब्ध है, या तो अपने ओएस की सहायता प्रणाली से इसे कैसे स्थापित करें, या PHP में एन्कोडिंग रूपांतरण करें।

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