2012-04-16 11 views
5

यूआरएल से एक एक्सएमएल फ़ाइल डाउनलोड करने के लिए लिनक्स कर्ल का उपयोग करने की कोशिश कर रहा है।लिनक्स कर्ल utf-8

सुंदर लगता है कि एक्सएमएल UTF-8 में एन्कोड किया गया है,

शक कर्ल -ओ does not को UTF-8 के रूप में सहेजें।

वैसे भी यूटीएफ -8 को कर्ल के साथ बचाने के लिए मजबूर होना है?


सुझाव है, मैं क्या पता चला के लिए धन्यवाद:

क्योंकि एक्सएमएल फ़ीड गतिशील है, नहीं हर समय यह किसी भी utf-8 वर्ण होते हैं। कभी-कभी इसमें पूरी सामग्री में utf-8 वर्ण नहीं होता है, भले ही इसे xml एन्कोडिंग और हेडर सामग्री प्रकार में utf-8 के रूप में सेट किया गया हो: charset = utf-8। जब इसमें कम से कम एक utf-8 वर्ण होता है, तो यह utf-8 के रूप में सहेजा जाएगा।

जब ऐसा होता है, तो कर्ल utf-8 के रूप में डाउनलोड नहीं होता है, जो समझ में आता है क्योंकि कोई utf-8 वर्ण नहीं है, utf-8 के रूप में स्टोर करने की आवश्यकता क्यों है।

यह बहुत मुश्किल है, कुछ वैधकर्ता को यूटीएफ -8 के खिलाफ वैध होना है, इसलिए मुझे अभी भी इसे utf8 पर मजबूर करने के लिए एक समाधान की आवश्यकता है क्योंकि डिफ़ॉल्ट रूप से मेरा सभी xml shld utf8-एन्कोडिंग में होना चाहिए।

आइकनव्यू f iso8859-1 utf-8 का उपयोग करके सुझाए गए प्रयासों को इस मामले के लिए काम नहीं करता है क्योंकि मुझे संदेह है कि यह iso8859-1 में नहीं है।

अभी भी एक बेहतर समाधान की आवश्यकता है।

+0

मैं नहीं मानता कि 'curl' यह क्या हासिल करेगा करने के लिए सभी पर किसी भी संशोधन बनाता है, और यह निश्चित रूप से फिर से एनकोड नहीं है पाठ। – geoffspear

+0

हाय धन्यवाद ... हालांकि मैं फिर से एन्कोड डेटा नहीं देख रहा हूं, बस सोच रहा हूं कि यह utf-8 के रूप में क्यों नहीं सहेज रहा है जबकि सामग्री alr utf-8 – flyclassic

+0

क्या आपको लगता है कि यह utf-8 के रूप में सहेज नहीं रहा है? आप वास्तव में क्या करने की कोशिश कर रहे हैं? – geoffspear

उत्तर

7

कर्ल फ़ाइल डाउनलोड करने वाले किसी भी रूपांतरण को नहीं करता है। यदि HTTP सर्वर आपको किसी अन्य एन्कोडिंग (उदा।, ISO8859-1) में एक्सएमएल की सेवा करता है, तो उसका कर्ल डिस्क पर भी सहेज लेगा।

आपकी समस्या को वैकल्पिक हल के लिए इस प्रकार के रूप में आप "iconv" का उपयोग कर सकते हैं:

curl URL | iconv -f iso8859-1 -t utf-8 > output.xml 

आशा इस मदद करते हैं।

+0

मैंने इस तरह से कोशिश की है, लेकिन यह अभी भी डाउनलोड यूटीएफ -8 के रूप में डाउनलोड नहीं किया गया है। मुझे पूरा यकीन है कि एक्सएमएल सामग्री utf-8 में हैं क्योंकि मैंने इसे विकसित किया है और mb_check_encoding के साथ जांच की है यह utf-8 के साथ सच है। मैं लिनक्स में फ़ाइल एन्कोडिंग मानक कैसे देख सकता हूं? मुझे यकीन नहीं है कि यह iso8859-1 हो जाता है, यही कारण है कि iconv काम नहीं करता है? file -bi मेरे लिए काम नहीं करता .. – flyclassic

+0

आप 'फ़ाइल FILENAME' टाइप करके फ़ाइल के एन्कोडिंग की जांच कर सकते हैं। कृपया 'file' के आउटपुट को पोस्ट करें (कर्नल के साथ डाउनलोड किए गए एक्सएमएल के खिलाफ, आइकन के बिना) यहां पोस्ट करें। – user1202136

+0

यदि आप मैक पर हैं, तो आइकनव पर भरोसा नहीं करना चाहते हैं, और इनकमिंग टेक्स्ट एन्कोडिंग के बारे में अनुमानों को हार्डकोड नहीं करना चाहते हैं, तो आप 'कर्ल यूआरएल' के साथ समान प्रभाव प्राप्त कर सकते हैं। textutil -cat txt -stdin -stdout -encoding utf-8' – algal

1

क्या आपने Accept-Charset शीर्षलेख जोड़ने का प्रयास किया है? मुझे एक फ़ाइल डाउनलोड करने में एक समान समस्या थी जो गलत एन्कोडिंग के साथ डाउनलोड कर रहा था। जब मैं स्वीकार करता हूँ-वर्णसेट हैडर सेट यह काम करता है:

curl -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" URL | iconv -f iso8859-1 -t utf-8 > output.xml