এতে 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']
ברי צקלה