2015-05-16 21 views
8

पर SQL सर्वर कनवर्टेशन को कनवर्ट करना संभव है, प्रोजेक्ट में मैं अपने डेटा पर काम कर रहा हूं SQL Server में संग्रहित है, Danish_Norwegian_CI_AS के साथ। डेटा को फ्रीटीडीएस और ओडीबीसी के माध्यम से आउटपुट किया जाता है, जो पाइथन को डेटा को यूटीएफ -8 के रूप में संभालता है। कुछ पात्रों, जैसे å, ø और æ, को सही ढंग से कोड नहीं किया जा रहा है, जिससे परियोजना को रोकने के लिए प्रगति हो रही है।क्या यूटीएफ -8/यूटीएफ -16

मैंने एन्कोडिंग, संयोजन और कोड-पृष्ठों की भ्रमित दुनिया के बारे में कुछ घंटे बिताए, और ऐसा लगता है कि मुझे पूरी तस्वीर की बेहतर समझ मिली है।

कुछ लेख जो मैंने पढ़े हैं, मुझे लगता है कि यह संभव होगा: SQL चयन कथन में निर्दिष्ट करें, कि आउटपुट होने पर कोलेशन डेटा को यूटीएफ -8 में एन्कोड किया जाना चाहिए।

कारण यह है कि मैं यह सोच रहा हूं this article है जो अलग-अलग संयोजनों के साथ तालिकाओं को कैसे प्राप्त करें, एक साथ अच्छा खेलने के लिए एक उदाहरण दिखाता है।

कॉलेशन को यूटीएफ -8/यूटीएफ -16 में परिवर्तित करने की दिशा में कोई भी पॉइंटर्स की सराहना की जाएगी!

संपादित करें: मैं पढ़ लिया है कि SQL सर्वर है कि अन्य स्ट्रिंग चर char, varchar और text मिलान सेट के अनुसार कोड किए जाते हैं nchar, nvarchar और ntext के माध्यम से एक यूनिकोड विकल्प प्रदान करता है, और। मैंने यह भी पढ़ा है कि उपर्युक्त यूनिकोड विकल्पों को यूटीएफ -16 संस्करण ucs-2 में कोड किया गया है (मुझे उम्मीद है कि मैं इसे सही याद कर रहा हूं)। इसलिए; लोकेल collation और यूनिकोड की टेबल को अनुमति देने के लिए, अच्छा खेलने के लिए, एक रूपांतरण समारोह होना चाहिए, नहीं?

+0

mySQL और jdbc का उपयोग कर एक ही समस्या होने के कारण, यह मेरी समस्या हल हो गई। 'तालिका बनाओ (.....) डिफॉल्ट CHARSET = utf8;' का प्रयोग करके टेबल बनाना और '' 'jdbc का उपयोग करके डेटाबेस से कनेक्ट करना: mysql: // localhost/testDb? useUnicode = true & characterEncoding = UTF-8 ";' तो मुझे लगता है कि एमएस एसक्यूएल सेवर –

+0

@SkarosIlias के साथ एक तरीका होना चाहिए आपके इनपुट के लिए धन्यवाद। दुर्भाग्य से तालिका पहले ही बनाई गई है और आबादी है, इसलिए यह मेरे लिए एक विकल्प नहीं है। – Rookie

+0

इसे एक नई तालिका के साथ आज़माएं और यह सुनिश्चित करने के लिए बस कुछ परीक्षण डेटा डालें। अगर यह 'तालिका बदलें' –

उत्तर

10

4 महीने हो जाएगा। यह पता चला है कि फ्रीटीडीएस ड्राइवर, या डेटाबेस संयोजन के साथ इसका कोई लेना-देना नहीं था:

यह pyodbc का कनेक्ट फ़ंक्शन था, जो स्पष्ट रूप से ध्वज की आवश्यकता होती है; unicode_results=True

अन्य दुर्भाग्यपूर्ण सॉल्स को अंधेरे में उद्देश्यहीन रूप से घूमने में मदद करने के लिए यहां एक सुराग की तलाश करने के लिए यहां पोस्ट किया गया।

3

ऐसा लगता है कि एसक्यूएल का समर्थन नहीं करता UTF-8 (here देखें) लेकिन आप चयन की तरह में मिलान बदलने का प्रयास कर सकते हैं: How to remove accents and all chars <> a..z in sql-server?

:

SELECT Account COLLATE SQL_Latin1_General_CP1_CI_AS 
from Data 

तुम भी लहजे इस समाधान का उपयोग कर सकते हैं पट्टी

एक अन्य समाधान

SELECT cast (Account as nvarchar) as NewAccount 
from Data 

nVARCHAR के लिए जहां खाता अपने प्रारंभिक टी पर varchar है अपने स्तंभ कास्टिंग किया जा सकता है योग्य।

उदाहरण के लिए आप का प्रयास करें:

SELECT cast(cast(N'ţ' as varchar) as nvarchar) 

अंतिम परिणाम "टी" पर, मैं अंत में मेरी समस्या का जवाब मिल गया

+0

'CAST()' पर काम किया है! इसके लिए शुक्रिया। – Ivan

संबंधित मुद्दे