2010-04-21 13 views
6

मेरे पास पाइथन (2.x) में बेस -256 बाइटस्टरीज़ के रूप में उत्पादित कुछ बाइनरी डेटा है। मुझे स्ट्रिंग में प्रत्येक बाइट (चार) के क्रमिक मान को संरक्षित करने, जावास्क्रिप्ट में पढ़ने की जरूरत है। यदि आप मुझे भाषाएं मिश्रण करने की अनुमति देंगे, तो मैं पाइथन में s को स्ट्रिंग एन्कोड करना चाहता हूं जैसे कि ord(s[i]) == s.charCodeAt(i) इसे जावास्क्रिप्ट में वापस पढ़ने के बाद।जेएसओएन को पाइथन बाइटस्ट्रिंग को क्रमबद्ध करना, क्रमिक वर्ण मानों को संरक्षित करना

ऐसा करने का सबसे साफ तरीका मेरे पायथन स्ट्रिंग को JSON पर क्रमबद्ध करना प्रतीत होता है। हालांकि, ensure_ascii और encoding पैरामीटर के साथ झुकाव के बावजूद, मेरी बाईस्टरीज़ पसंद नहीं करता है। क्या यूनिकोड स्ट्रिंग्स पर बाइटस्ट्रिंग को एन्कोड करने का कोई तरीका है जो सामान्य वर्ण मानों को संरक्षित करता है? अन्यथा मुझे लगता है कि मुझे ASCII श्रेणी के ऊपर वाले वर्णों को JSON-style \u1234 से बचने की आवश्यकता है; लेकिन इस तरह का कोडेक पाइथन के codecs के बीच प्रतीत नहीं होता है।

क्या पाइथन बाइटस्टर्सिंग जेएसओएन को क्रमबद्ध करने के लिए एक आसान तरीका है, चार मूल्यों को संरक्षित करना, या क्या मुझे अपना स्वयं का एन्कोडर लिखना है?

उत्तर

4

वहाँ यूनिकोड तार कि क्रमसूचक चरित्र मूल्यों को बरकरार रखता है के लिए bytestrings एन्कोड करने के लिए कोई तरीका है?

बाइट -> यूनिकोड परिवर्तन decode, नहीं encode कहा जाता है। लेकिन हां, iso-8859-1 जैसे कोडेक के साथ डिकोडिंग वास्तव में "आप चाहते हैं कि सामान्य वर्ण मानों को संरक्षित" होना चाहिए।

+0

ठीक है मैं रहूंगा; वह बहुत आसान था। धन्यवाद! –

3

क्या आप बस बेस 64 का उपयोग कर सकते हैं? (पायथन base64 मॉड्यूल, जावास्क्रिप्ट में कई कार्यान्वयन हैं, जिनमें से एक here है।)

एएससीआईआई या यूटीएफ -8 से बचने का कोई कारण नहीं है जब तक कि आपका डेटा लगभग सभी पाठ न हो।

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