संख्या चिह्न
, º
, ISO-8869-1
में 0xBA है यूटीएफ -8 नहीं। तो आपकी सीएसवी फ़ाइल लैटिन -1 के साथ एन्कोड की गई है लेकिन आप एन्कोडिंग को ठीक किए बिना इसे अपने डेटाबेस में यूटीएफ -8 के रूप में संग्रहीत करने का प्रयास कर रहे हैं।
आप अपनी सीएसवी लाइब्रेरी को यह बताने का प्रयास कर सकते हैं कि यह लैटिन -1 एन्कोडेड टेक्स्ट से निपट रहा है और शायद यह यूटीएफ -8 में कनवर्ट करने का ख्याल रखेगा। यदि वह काम नहीं करता है, तो आप इसे आइकनव :
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
=> ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
=> ["°"]
आपको SQLite से परेशानी नहीं हो रही है क्योंकि SQLite बहुत क्षमाशील होता है और इसमें बहुत ढीली प्रकार की प्रणाली होती है। यदि आप इसे अमान्य डेटा खिलाने का प्रयास करते हैं, तो PostgreSQL, OTOH, बल्कि सख्त हो जाता है और ठीक से शिकायत करता है। मैं अनुशंसा करता हूं कि यदि आप हेरोकू और पोस्टग्रेएसक्यूएल पर तैनात होने जा रहे हैं तो आप SQLite के शीर्ष पर विकास करना बंद कर दें, ऐसे अन्य अंतर हैं जो समस्याएं पैदा करेंगे (उदाहरण के लिए ग्रुप बाय और लाइक का व्यवहार)।