में चरित्र को कनवर्ट करने में समस्याएं आईएसओ -885 9 -1 डेटाबेस सामग्री को यूटीएफ -8 में परिवर्तित करने के लिए PHP का उपयोग करने में कुछ समस्याएं हैं। मैं परीक्षण के लिए निम्न कोड चला रहा हूँ:PHP: आईएसओ -885 9 -1 से यूटीएफ -8
// Connect to a latin1 charset database
// and retrieve "Georgia O’Keeffe", which contains a "’" character
$connection = mysql_connect('*****', '*****', '*****');
mysql_select_db('*****', $connection);
mysql_set_charset('latin1', $connection);
$result = mysql_query('SELECT notes FROM categories WHERE id = 16', $connection);
$latin1Str = mysql_result($result, 0);
$latin1Str = substr($latin1Str, strpos($latin1Str, 'Georgia'), 16);
// Try to convert it to UTF-8
$utf8Str = iconv('ISO-8859-1', 'UTF-8', $latin1Str);
// Output both
var_dump($latin1Str);
var_dump($utf8Str);
जब मैं Firefox के स्रोत दृश्य में इस चलाने के लिए, यकीन है कि फायरफॉक्स के एन्कोडिंग सेटिंग बनाने "पश्चिमी (ISO-8859-1)" पर सेट है, मैं इस मिल:
अभी तक, बहुत अच्छा है। पहले आउटपुट में अजीब उद्धरण शामिल है और मैं इसे सही तरीके से देख सकता हूं क्योंकि यह आईएसओ -885 9 -1 में है और फ़ायरफ़ॉक्स भी है।
मैं फ़ायरफ़ॉक्स के कूट "UTF-8", यह इस तरह दिखता है सेटिंग बदलने के बाद:
कहाँ बोली चली गई? iconv()
को यूटीएफ -8 में परिवर्तित नहीं किया गया था?
वाह, मैंने वह किया और मैं UTF-8 मोड में U + 2019 देखो! लेकिन "आईएसओ -885 9 -1" से "यूटीएफ -8" तक बड़ी मात्रा में डेटा बदलने के लिए "विंडोज़ -1252" का उपयोग करना सुरक्षित है? दूसरे शब्दों में, क्या सभी आईएसओ -885 9 -1 वर्ण अभी भी सही ढंग से परिवर्तित हो जाएंगे? – mattalxndr
वर्ण 0x80-0x9F सही ढंग से परिवर्तित नहीं होंगे। लेकिन ये नियंत्रण वर्ण हैं जिनका लगभग कभी उपयोग नहीं किया जाता है। – dan04
@mattalexx यदि आप उस श्रेणी में वर्णों के लिए स्ट्रिंग की जांच करते हैं और कोई भी पाते हैं, तो यह एक अच्छी शर्त है कि स्ट्रिंग को विंडोज -1252 में एन्कोड किया गया है। यदि आप ** उस सीमा में किसी भी अक्षर को नहीं ढूंढते हैं, तो यह आईएसओ -885 9 -1 होने की अधिक संभावना है। –