2009-12-10 13 views
14

मेरे पास एक MySQL तालिका ठीक से यूटीएफ -8 वर्ण सेट पर सेट है। मुझे संदेह है कि मेरे कॉलम में से एक में डाला गया कुछ डेटा डबल एन्कोड किया गया है। मुझे एक गैर-ब्रेकिंग स्पेस कैरेक्टर (यूटीएफ -8 0xC2A0) देखने की उम्मीद है, लेकिन इस तालिका के बाहर इस कॉलम को चुनते समय मुझे जो मिलता है वह चार ऑक्टेट्स (0xC3A2 0xC2A0) होता है। यही वह है जो मैं देखने की उम्मीद करता हूं कि किसी बिंदु पर किसी ने आईटीएफ -8 0xC2A0 को आईएसओ -885 9 -1 के रूप में माना था, फिर माईएसक्यूएल में डालने से पहले यूटीएफ -8 में फिर से एन्कोड करने का प्रयास किया।मैं एक MySQL कॉलम में संग्रहीत कच्चे बाइट्स को कैसे देख सकता हूं?

मेरा परीक्षण जहां मैं चार ऑक्टेट्स देख रहा हूं, में इस कॉलम को पर्ल के डीबीडी :: mysql के साथ MySQL से बाहर करना शामिल है। मैं पर्ल और डीबीडी :: mysql समीकरण के बाहर लेना चाहता हूं यह सत्यापित करने के लिए कि उन चार ऑक्टेट्स वास्तव में MySQL संग्रहीत किए गए हैं। एसक्यूएल क्वेरी के साथ सीधे ऐसा करने का कोई तरीका है?

+0

हेक्स ने ऐसा किया, और ऐसा लगता है कि मैं तालिका में डबल एन्कोडिंग के बारे में सही था। एन्कोडिंग समस्या से निपटने के लिए मुझे अपस्ट्रीम सिस्टम को देखने की आवश्यकता होगी। –

+0

रयान! आप यूटीएफ 8 के बारे में कितना बिल्ली जानते हैं कि आप इस अनुमान को सही तरीके से बनाने में सक्षम हैं !? – portforwardpodcast

उत्तर

19
mysql> SELECT HEX(name) FROM mytable; 
+-----------+ 
| hex(name) | 
+-----------+ 
| 4142C2A0 | 
+-----------+ 
3

क्यों BINARY ऑपरेटर का प्रयास नहीं करें?

"द बिनरी ऑपरेटर एक द्विआधारी स्ट्रिंग के बाद स्ट्रिंग को रखता है। यह एक आसान तरीका है जिसे चरित्र द्वारा चरित्र के बजाए बाइट द्वारा बाइट द्वारा किया जा सकता है।"

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

आशा इस मदद करता है!

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