2009-03-16 15 views
5

मैं कुछ कोड आयात करने के लिए कर्ल का उपयोग कर रहा हूं। हालांकि, फ्रेंच में, सभी पात्र मजाकिया आते हैं। उदाहरण के लिए: बोनजोर ...कर्ल आयात चरित्र एन्कोडिंग समस्या

मेरे पास आयातित कोड पर कुछ भी बदलने की पहुंच नहीं है। क्या यह ठीक करने के लिए मैं कुछ भी कर सकता हूं?

धन्यवाद

+0

"आपका स्थिति स्पष्ट नहीं है कहाँ PHP में आता है सामग्री आप PHP कोड को डाउनलोड कर रहे है क्या क्या आप पाठ को बाद में देखने के लिए उपयोग कर रहे हैं? " –

+0

से नीचे जॉन स्कीट के उत्तर से आपकी स्थिति अस्पष्ट है। PHP कहाँ आता है? क्या आप PHP कोड डाउनलोड कर रहे हैं? बाद में पाठ देखने के लिए आप क्या उपयोग कर रहे हैं? यह लगभग निश्चित रूप से उपयुक्त एन्कोडिंग में डाउनलोड किए गए डेटा को संभालने का मामला है। हालांकि, आपको यह जानने की आवश्यकता होगी कि कौन सी एन्कोडिंग है (संभावित संकेत के लिए HTTP शीर्षलेख देखें, हालांकि यह सही ढंग से सेट नहीं हो सकता है) और * सही * एन्कोडिंग का उपयोग कैसे करें। हम बाद के बिंदु पर आपकी सहायता नहीं कर सकते हैं जब तक कि हम यह नहीं जानते कि आप इसे लाने के बाद डेटा के साथ क्या कर रहे हैं। –

उत्तर

14

की तरह जॉन स्कीट बताया यह अपनी स्थिति को समझने के लिए, फिर भी अगर आप केवल अंतिम पाठ के लिए उपयोग किया मुश्किल है, तो आप पाठ एन्कोडिंग बदलने के लिए iconv इस्तेमाल करने की कोशिश कर सकते हैं।

आईई।

$text = iconv("Windows-1252","UTF-8",$text); 

मैं वही समस्या समय पहले मिला है (इतालवी भाषा और विशेष वर्ण के साथ) और मैं इस तरह से इसका समाधान कर लिया।

विभिन्न संयोजन (यूटीएफ -8, आईएसओ -885 9 -1, विंडोज -1252) आज़माएं।

+0

PHP के iconv के लिए प्रलेखन: http://php.net/manual/en/book.iconv.php –

3

पीएचपी डिफ़ॉल्ट रूप से UTF-8 उपयोग करने के लिए लगता है, इसलिए मैं निम्नलिखित काम करता पाया

$ पाठ = iconv ("UTF-8", "विंडोज़ -1252", $ पाठ);

2

मुझे वर्तमान में एक ही समस्या का सामना करना पड़ रहा है, मैं एक साधारण एचटीएमएल <title> आयातक सीआ कर्ल लिखने की कोशिश कर रहा हूं। तो मैं अब तक मैं क्या किया है की जानकारी देने के लिए जा रहा हूँ: वहाँ curl_getinfo() के माध्यम से प्रतिक्रिया हेडर पर एन्कोडिंग के किसी भी संकेत है कि अगर

  1. cURL के माध्यम से एचटीएमएल पुनः प्राप्त
  2. चेक और regex के माध्यम से यह मेल
  3. सामग्री प्रकार मेटा को देखने का उद्देश्य और <title> टैग के लिए HTML पार्स (हाँ, i know the consequences)
  4. , दोनों सामग्री प्रकार, शीर्षक और मेटा तुलना करें और क्योंकि अगर यह अलग है मेटा एक का चयन हम जानते हैं कि कोई भी उनके httpd कॉन्फ़िगरेशन और वहां परवाह नहीं करता है गंदगी समाधान का एक बहुत उपयोग कर रहे हैं
  5. iconv() स्ट्रिंग
  6. व्हिश हर रोज जब कोई मानकों $DEITY उसे दण्ड का पालन नहीं करता/उसके दिन के अंत तक, क्योंकि यह मुझे मेटा पार्स की बचत होगी कि
3

आप बदल सकते अपने

$data = curl_exec($ch); 

द्वारा

$data = utf8_decode(curl_exec($ch)); 

मेरे पास यह वही मुद्दा था और यह मेरे लिए अच्छा काम करता था।

+0

महत्वपूर्ण: यूटीएफ 8 डेटा को कनवर्ट करते समय जिसमें यूरो साइन होता है utf_decode फ़ंक्शन का उपयोग न करें। utf_decode डेटा को आईएसओ -885 9 -1 वर्णमाला में परिवर्तित करता है। लेकिन आईएसओ -885 9 -1 वर्णमाला में EURO चिह्न नहीं है, इसलिए यूरो चिह्न के लिए एक प्रश्न चिह्न चरित्र '?' में परिवर्तित किया जाएगा यूरोओ साइन के साथ उचित रूप से यूटीएफ 8 डेटा को कन्वर्ट करने के लिए आपको उपयोग करना होगा: iconv ("यूटीएफ -8", "सीपी 1252", $ डेटा) – Thoman

6

मुझे एक ही समस्या थी। मैंने इनपुट और आउटपुट वर्णमाला के सभी संयोजनों के माध्यम से लूप करने की कोशिश की। कुछ भी मदद नहीं की! :(

हालांकि मैं कोड है कि वास्तव में डेटा दिलवाया पर पहुंच सकता था और यह वह जगह है जहां अपराधी झूठ बोला। डाटा cURL के माध्यम से प्राप्त किया गया था। जोड़ना

curl_setopt($ch,CURLOPT_BINARYTRANSFER,true); 

यह तय की।

कोड के एक उपयोगी समूह वर्णसेट की एक सूची के सभी संभव संयोजनों की कोशिश करने के लिए:।?

$charsets = array( 
     "UTF-8", 
     "ASCII", 
     "Windows-1252", 
     "ISO-8859-15", 
     "ISO-8859-1", 
     "ISO-8859-6", 
     "CP1256" 
     ); 

foreach ($charsets as $ch1) { 
    foreach ($charsets as $ch2){ 
     echo "<h1>Combination $ch1 to $ch2 produces: </h1>".iconv($ch1, $ch2, $text_2_convert); 
    } 
} 
संबंधित मुद्दे