2012-09-20 18 views
55

मैंने यूएसएफ 8 का उपयोग कर mysql से SQL सर्वर (राजनीति), मूल mysql डेटाबेस में डेटाबेस माइग्रेट कर दिया है।एसक्यूएल सर्वर utf8 कैसे?

अब मैं https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collation-charset पढ़ता हूं कि SQL Server 2008 utf8 का समर्थन नहीं करता है, क्या यह एक मजाक है?

SQL सर्वर एकाधिक डेटाबेस होस्ट करता है, ज्यादातर लैटिन-एन्कोडेड। चूंकि माइग्रेटेड डीबी वेब प्रकाशन के लिए है, इसलिए मैं utf8-एन्कोडिंग रखना चाहता हूं। क्या मुझे कुछ याद आया है या मुझे आवेदन स्तर पर एन्क/डीसी करने की ज़रूरत है?

+94

+1 "यह एक मजाक है" के लिए +1। ;) – deceze

+1

यह ध्यान देने योग्य है कि जावा, जावास्क्रिप्ट, डॉटनेट और विंडोज़ सभी आंतरिक रूप से यूटीएफ -16 का उपयोग करते हैं, इसलिए यदि आपकी वेबसाइट किसी भी में कोडित की जानी है तो आप यूटीएफ 16 में रूपांतरण सहेज रहे हैं। – Ben

+1

यदि यह मदद करता है, तो आप दिखा सकते हैं कि SQL सर्वर आंतरिक रूप से टेक्स्ट को यूटीएफ -8 के रूप में संग्रहीत करता है; और जब आप इसे पुनर्प्राप्त करते हैं तो चालक इसे वापस यूटीएफ -16 में बदल देता है। आप यह भी दिखा सकते हैं कि SQL सर्वर टेक्स्ट को यूसीएस -32 के रूप में संग्रहीत करता है। आंतरिक भंडारण प्रारूप एक अप्रासंगिक कार्यान्वयन विस्तार है। महत्वपूर्ण यह है कि डेटाबेस यूटीएफ -16 (आपके प्रोग्रामिंग पर्यावरण से मेल खाते हुए) के रूप में यूनिकोड चरित्र डेटा लौटाते हैं। –

उत्तर

13

नहीं! यह एक मजाक नहीं है। यूनिकोड डेटा है कि या तो निश्चित लंबाई कर रहे हैं, nchar http://msdn.microsoft.com/en-us/library/ms186939.aspx

चरित्र डेटा प्रकार, या चर लंबाई, nvarchar, और यूनिकोड यूसीएस -2 वर्ण सेट का उपयोग करें:

एक नज़र यहाँ ले लो।

और यह भी यहाँ: http://en.wikipedia.org/wiki/UTF-16

बड़े यूसीएस -2 (2-बाइट यूनिवर्सल वर्ण सेट) एक ऐसी ही वर्ण एन्कोडिंग कि यूनिकोड के संस्करण 2.0 में UTF-16 के द्वारा अधिक्रमित किया गया है जुलाई 1 99 6 में मानक।

+0

ठीक है। क्या mssql-client बाहरी यूटीएफ 8-दुनिया में अनुवाद कर सकता है? – Teson

+0

'mssql-client' सबकुछ हो सकता है। जावा, .NET, सी, PHP, आदि ... क्लाइंट के साथ क्या मतलब है? – edze

+1

ग्राहक: php के तहत sqlsrv एक्सटेंशन। रॉबर्ट ने इसे यहां टेक्स्ट साफ़ किया है: http://social.msdn.microsoft.com/Forums/en/sqldriverforphp/thread/e6e506cd-e7f8-42a2-87fb-4e19f8fa9368, परिणाम का मूल्यांकन और पोस्ट करेगा। – Teson

1

वास्तव में एसक्यूएलसीएलआर यूडीएफ बनाकर यूटीएफ 8 का उपयोग करने में कोई समस्या नहीं है और आप माइक्रोसॉफ्ट कोड से डाउनलोड कर सकते हैं। इस लिंक को जांचें: http://technet.microsoft.com/en-us/library/ms160893(v=sql.90).aspx

12

यूटीएफ -8 एक चरित्र सेट नहीं है, यह एक एन्कोडिंग है। यूटीएफ -8 के लिए चरित्र सेट यूनिकोड है। यदि आप यूनिकोड टेक्स्ट स्टोर करना चाहते हैं तो आप nvarchar डेटा प्रकार का उपयोग करें।

यदि डेटाबेस टेक्स्ट स्टोर करने के लिए यूटीएफ -8 का उपयोग करेगा, तो आपको अभी भी एन्कोडेड यूटीएफ -8 डेटा के रूप में टेक्स्ट नहीं मिलेगा, तो आप इसे डीकोडेड टेक्स्ट के रूप में प्राप्त करेंगे।

आप आसानी से डेटाबेस में यूटीएफ -8 एन्कोडेड टेक्स्ट स्टोर कर सकते हैं, लेकिन फिर आप इसे टेक्स्ट के रूप में स्टोर नहीं करते हैं, तो आप इसे बाइनरी डेटा (varbinary) के रूप में संग्रहीत करते हैं।

+0

इनपुट के लिए धन्यवाद। इसके आस-पास सीखने के लिए और कुछ है, उदाहरण के लिए http://stackoverflow.com/questions/3951722/whats-the-difference-between-unicode-and-utf8 – Teson

+0

मैं इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता हूं। "चरित्र यूटीएफ 8 के लिए सेट यूनिकोड है "?? यूएनएफ 8 तरीका यूनिकोड से अधिक व्यापक नहीं है। यूनिकोड बनाम यूटीएफ 8 में डौडलोगन सेविंग अलग-अलग परिणाम देता है: (ईएफ बीबी बीएफ) 44 61 75 सी 3 बी 0 61 6 सी 6 एफ 67 6 ई बनाम \ u0044 \ u0061 \ u0075 \ u00f0 \ u0061 \ u006c \ u006f \ u0067 \ u006e – Teson

+2

@ user247245: यूटीएफ -8 एन्कोडिंग है और यूनिकोड चरित्र सेट है। यूटीएफ -8 यूनिकोड को बचाने का एक तरीका है। यूनिकोड का प्रतिनिधित्व करने के लिए आपने जो उपयोग किया है वह बचने का कोड है स्ट्रिंग अक्षर में प्रयोग किया जाता है, यह आमतौर पर यूनिकोड को फ़ाइल के रूप में प्रदर्शित नहीं करता है। यूटीएफ -32 wo uld सीधे अनकोड से फ़ाइल स्वरूप में निकटतम अनुवाद हो, जहां प्रत्येक वर्ण कोड 32 बिट संख्या के रूप में सहेजा जाता है। – Guffa

2

ध्यान दें कि माइक्रोसॉफ्ट एसक्यूएल सर्वर 2016 के रूप में, यूटीएफ -8 bcp, BULK_INSERT, और OPENROWSET द्वारा समर्थित है।

परिशिष्ट 2016-12-21: एसक्यूएल सर्वर 2016 एसपी 1 अब मानक और एक्सप्रेस सहित एमएस एसक्यूएल के सभी संस्करणों के लिए यूनिकोड संपीड़न (और सबसे पहले एंटरप्राइज़-केवल विशेषताएं) सक्षम बनाता है। यह यूटीएफ -8 समर्थन के समान नहीं है, लेकिन यदि लक्ष्य पश्चिमी वर्णमाला के लिए डिस्क स्पेस कमी है तो यह समान लाभ प्राप्त करता है।

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