से गायब चरित्र मेरे डेटाबेस में NVARCHAR
प्रकार कॉलम है। मैं इस कॉलम की सामग्री को मेरे कोड में सादा स्ट्रिंग में बदलने में असमर्थ हूं। (मैं डेटाबेस कनेक्शन के लिए pyodbc
का उपयोग कर रहा हूं)।स्ट्रिंग एन्कोड/डीकोड समस्या - अंत
# This unicode string is returned by the database
>>> my_string = u'\u4157\u4347\u6e65\u6574\u2d72\u3430\u3931\u3530\u3731\u3539\u3533\u3631\u3630\u3530\u3330\u322d\u3130\u3036\u3036\u3135\u3432\u3538\u2d37\u3134\u3039\u352d'
# prints something in chineese
>>> print my_string
䅗䍇湥整㐰㤱㔰㜱㔹㔳㘱㘰㔰㌰㈭〶〶ㄵ㐲㔸ⴷㄴ〹㔭
निकटतम मैं चले गए हैं utf-16
के लिए यह रूप में एन्कोडिंग के माध्यम से है:
>>> my_string.encode('utf-16')
'\xff\xfeWAGCenter-04190517953516060503-20160605124857-4190-5'
>>> print my_string.encode('utf-16')
��WAGCenter-04190517953516060503-20160605124857-4190-5
लेकिन वास्तविक मूल्य है कि मैं डेटाबेस में मूल्य की दुकान के अनुसार की जरूरत है:
WAGCenter-04190517953516060503-20160605124857-4190-51
मैंने utf-8
, utf-16
, ascii
, utf-32
पर एन्कोडिंग करने की कोशिश की लेकिन कुछ भी काम नहीं कर रहा था।
क्या किसी के पास इस बात का विचार है कि मुझे क्या याद आ रहा है? और my_string
से वांछित परिणाम कैसे प्राप्त करें।
संपादित: यह utf-16-le
में परिवर्तित करने पर, मैं शुरू से ही अवांछित पात्रों को दूर करने में सक्षम हूँ, लेकिन अभी भी एक चरित्र अंत से लापता है
>>> print t.encode('utf-16-le')
WAGCenter-04190517953516060503-20160605124857-4190-5
कुछ अन्य स्तंभों के लिए कोशिश कर रहा है, यह काम कर रहा है। इस अस्थायी मुद्दे का कारण क्या हो सकता है?
आप शुरुआत में एक बाइट ऑर्डर मार्क (बीओएम) – brianpck
@brianpck बाइट ऑर्डर मार्क देख रहे हैं + अंत में गायब 1। मैं अभी * बाइट ऑर्डर मार्क * के बारे में जांच कर रहा हूं। कोई विचार क्यों आखिरकार '1' गायब है? – user7001260
'my_string' * में वर्ण * सीजेके कोड पॉइंट्स हैं, जो वास्तव में 'nvarchar' फ़ील्ड से वास्तव में वापस आने की संभावना नहीं है? यदि संभव हो तो इसे हमेशा 'वर्चर' के रूप में एक कलाकार 'चयन कास्ट (क्षेत्र के रूप में क्षेत्र (xxx)) के साथ पढ़ा जा सकता है ... ' –