2011-12-20 14 views
7

मैंने सुना है कि PHP में बहुत कम यूनिकोड समर्थन है। तो PHP 5+ के तहत समर्थित PHP 5 निर्मित अनुप्रयोग यूनिकोड बनाने में क्या लगता है? क्या mbstring यहां एकमात्र विकल्प होगा? इस PHP सीमा के आसपास फेसबुक या याहू कैसे प्राप्त हुआ है?PHP में यूनिकोड?

+1

यहां पोस्ट किए गए सभी निर्देशों का पालन करें। मेरा सुझाव है कि आप नोटपैड ++ डाउनलोड करें और फ़ाइल को utf8 के रूप में सहेजना सुनिश्चित करें। कई संपादकों के पास ansi के रूप में सहेजने की एक बुरी आदत है जो – OptimusCrime

+0

@ ओप्टिमस क्राइम है, मुझे लगता है कि यह प्रोग्रामर की बुरी आदत है, सेटिंग्स में बदलाव न करने के लिए, जो लगभग किसी भी संपादक के लिए संभव है (कम से कम सिंटैक्स-हाइलाइटिंग वाले) । – feeela

उत्तर

8

पीएचपी किसी भी एन्कोडिंग के लिए कोई निम्न स्तर के समर्थन हासिल है। लेकिन वास्तव में इसका मतलब यह है कि यह भाषा स्तर पर परवाह नहीं करता है। PHP में स्ट्रिंग्स कच्चे बाइट अनुक्रम हैं, जो आपके पसंदीदा एन्कोडिंग में हो सकते हैं। बहु-बाइट तारों को संभालने पर, आपको सीधे बाइट स्ट्रीम के साथ सीधे स्क्रू करने की बजाय सही स्ट्रिंग मैनिपुलेशन फ़ंक्शन का उपयोग करने की आवश्यकता होती है। तो यूनिकोड का एकमात्र "गैर-समर्थन" यह है कि इसमें मुख्य भाषा में एन्कोडिंग की अवधारणा शामिल नहीं है, लेकिन आप अभी भी उचित स्ट्रिंग फ़ंक्शन का उपयोग करके तारों को जोड़कर पूरी तरह से ठीक से किसी भी एन्कोडिंग के साथ काम कर सकते हैं।

दरअसल, यदि आप हर समय यूटीएफ -8 में सबकुछ रखने के लिए थोड़ी सी देखभाल करते हैं, तो आपको शायद ही कभी एन्कोडिंग के बारे में कुछ भी चिंता करने की ज़रूरत होगी। PHP यूनिकोड के साथ बस ठीक काम करता है।

इस विषय के व्यापक कवरेज के लिए, कृपया What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text देखें।

+0

इस लिंक के लिए +1 –

1

PHP में यूनिकोड समर्थन खराब है, लेकिन ऐसा करना असंभव नहीं है, आपको केवल उन कार्यों के साथ सावधान रहना होगा जिनका उपयोग आप कर रहे हैं और यूनिकोड के लिए उनका समर्थन। इस पृष्ठ में विभिन्न कार्यों और एक्सटेंशन के लिए यूनिकोड समर्थन का एक अच्छा सारांश है http://www.phpwact.org/php/i18n/utf-8

+3

लिंक्ड आलेख थोड़ा हिंसक है। यह आलेख 200 9 -21-21 को लिखा गया था और जाहिर है कि पुराना PHP संस्करण है, जो अतिरिक्त रूप से एमबीस्ट्रिंग-एक्सटेंशन (अधिकांश वर्तमान, पूर्व-संकलित लिनक्स-पैकेज [जैसे डेबियन या उबंटू के लिए] के बिना संकलित किया गया था, जिसमें एमबीस्ट्रिंग- विस्तार)। बस उस एक्सटेंशन का उपयोग करें। – feeela

0

यदि डेटा यूटीएफ -8 का उपयोग करने वाली सारणी से आता है तो आपको केवल सही शीर्षलेख और मेटा सेट करना चाहिए और आपको ठीक होना चाहिए सांकेतिक शब्दों में बदलना कुछ भी):

<?php 
header ('Content-type: text/html; charset=utf-8'); 
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head> 
<body> 

</body> 
</html> 
+0

यह PHP के माध्यम से स्ट्रिंग-हैंडलिंग पर कुछ भी नहीं बदलेगा, उदा। 'substr()' जैसी विधियों में। चाफ्ट के उत्तर पर भी लिंक देखें ... – feeela

-1

निम्नलिखित mbstring-चर php.ini या vhost-विन्यास (httpd.conf के माध्यम से स्थापित किया जाना चाहिए; प्रति निर्देशिका काम नहीं करता है [.htaccess के माध्यम से]):

mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8 
mbstring.func_overload = 7 

बस कोड को छोड़ दें, इसे बनाएं सुनिश्चित करें कि आपका संपादक/आईडीई केवल यूटीएफ -8 के रूप में फ़ाइलों को बचाता है और यूटीएफ -8 के रूप में सब कुछ प्रदान करता है (HTTP-header या मेटा-टैग के माध्यम से)।

यह भी देखें: PHP Manual – Multibyte String – Function Overloading Feature

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