এতে ensure_ascii=Falseস্যুইচটি ব্যবহার করুন json.dumps(), তারপরে মানটি নিজেই ইউটিএফ -8 এ এনকোড করুন:
>>> json_string = json.dumps("ברי צקלה", ensure_ascii=False).encode('utf8')
>>> json_string
b'"\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94"'
>>> print(json_string.decode())
"ברי צקלה"
আপনি যদি কোনও ফাইলে লিখছেন তবে কেবল json.dump()এনকোড করার জন্য ফাইল অবজেক্টটি ব্যবহার করে ছেড়ে দিন:
with open('filename', 'w', encoding='utf8') as json_file:
json.dump("ברי צקלה", json_file, ensure_ascii=False)
পাইথন 2 এর জন্য ক্যাভেটস
পাইথন 2 এর জন্য, অ্যাকাউন্টে নেওয়ার জন্য আরও কয়েকটি ক্যাভেট রয়েছে। আপনি যদি কোনও ফাইলে এটি লিখতে থাকেন তবে আপনি কোনও ফাইল অবজেক্ট তৈরির io.open()পরিবর্তে ব্যবহার করতে পারেন open()যা আপনার লেখার সাথে সাথে ইউনিকোড মানকে এনকোড করে, তবে json.dump()সেই ফাইলটিতে লেখার পরিবর্তে ব্যবহার করুন:
with io.open('filename', 'w', encoding='utf8') as json_file:
json.dump(u"ברי צקלה", json_file, ensure_ascii=False)
মনে রাখবেন যে যে কি মধ্যে বাগ jsonমডিউল যেখানে ensure_ascii=Falseপতাকা একটি তৈরী করতে পারে মিশ্রণ এর unicodeএবং strবস্তু। পাইথন 2 এর জন্য কাজটি হ'ল:
with io.open('filename', 'w', encoding='utf8') as json_file:
data = json.dumps(u"ברי צקלה", ensure_ascii=False)
# unicode(data) auto-decodes data to unicode if str
json_file.write(unicode(data))
পাইথন 2-এ, strইউটিএফ -8 এ এনকোডেড বাইট স্ট্রিং (টাইপ ) ব্যবহার করার সময়, encodingকীওয়ার্ডটি সেট করে নেওয়ার বিষয়টি নিশ্চিত করুন :
>>> d={ 1: "ברי צקלה", 2: u"ברי צקלה" }
>>> d
{1: '\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94', 2: u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'}
>>> s=json.dumps(d, ensure_ascii=False, encoding='utf8')
>>> s
u'{"1": "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4", "2": "\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"}'
>>> json.loads(s)['1']
u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'
>>> json.loads(s)['2']
u'\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4'
>>> print json.loads(s)['1']
ברי צקלה
>>> print json.loads(s)['2']
ברי צקלה