मैं रूबी 1.9.2रूबी सीएसवी UTF-8 के रूप में फाइल और/या UTF-8
मैं कोशिश कर रहा हूँ एक CSV फ़ाइल है कि कुछ फ्रेंच शामिल पार्स उपयोग कर रहा हूँ करने के लिए ASCII-8 बिट एन्कोडिंग परिवर्तित पढ़ शब्द (उदाहरण के लिए spécifié) और सामग्री को एक MySQL डेटाबेस में रखें।
जब मैं CSV फ़ाइल से लाइनों को पढ़ने,
file_contents = CSV.read("csvfile.csv", col_sep: "$")
तत्वों स्ट्रिंग्स हैं ASCII-8bit इनकोडिंग (specifie एसपी \ xE9cifi \ xE9 हो जाता है), और "specifie तरह तारों के रूप में वापस आने के लिए "तब मेरे MySQL डेटाबेस में ठीक तरह से सहेजा नहीं जाता है।
Yehuda Katz कहता है कि ASCII-8BIT वास्तव में "बाइनरी" डेटा है जिसका अर्थ है कि सीएसवी को उचित एन्कोडिंग को पढ़ने का तरीका नहीं है।
तो, अगर मैं बनाने की कोशिश सीएसवी इस तरह एन्कोडिंग मजबूर:
file_contents = CSV.read("csvfile.csv", col_sep: "$", encoding: "UTF-8")
मैं निम्न त्रुटि
ArgumentError: invalid byte sequence in UTF-8:
मिलता है मैं अपने मूल ASCII-8 बिट एन्कोड करने के लिए वापस जाने के लिए स्ट्रिंग्स और स्ट्रिंग की जांच करें कि मेरा सीएसवी ASCII-8BIT के रूप में पढ़ता है, ऐसा लगता है कि यह "गैर spécifié" के बजाय "गैर sp \ xE9cifi \ xE9" जैसा दिखता है।
मैं "गैर एसपी \ xE9cifi \ xE9" "गैर specifie" परिवर्तित नहीं कर सकते इस "Non sp\xE9cifi\xE9".encode("UTF-8")
करके क्योंकि मैं इस त्रुटि मिलती है:
Encoding::UndefinedConversionError: "\xE9" from ASCII-8BIT to UTF-8
,
जो Katz संकेत दिया ऐसा होगा क्योंकि ASCII-8BIT वास्तव में एक उचित स्ट्रिंग "एन्कोडिंग" नहीं है।
सवाल:
- मैं सीएसवी उचित एन्कोडिंग में मेरी फाइल को पढ़ने के लिए मिल सकता है? यदि हां, तो कैसे?
- MySQL में उचित संग्रहण के लिए मैं ASCII-8BIT स्ट्रिंग को UTF-8 में कैसे परिवर्तित करूं?
ऐसा लगता है कि फ़ाइल को UTF-8 नहीं हो सकता है इनकोडिंग; क्या आपने फ़ाइल के वास्तविक एन्कोडिंग की जांच की है? – coreyward
आपकी फ़ाइल यूटीएफ -8 में एन्कोड नहीं है। यूटीएफ -8 में 'सी 3 ए 9 'होना चाहिए, न कि' E9'। ऐसा लगता है कि आप इसके बजाय आईएसओ -885 9 -1 से निपट रहे हैं। – deceze
मुझे लगता है मैं यह पता लगा: my_ascii_8bit_string.unpack ("सी *") पैक ("यू *") काम करने के लिए लगता है।। – user141146