如何保持unicode字符的原始值,即使将其写入json文件后?



我正在处理一个包含unicode表情符号的文件。在保持原汁原味的同时看起来还不错。我能看到表情符号。但是当我使用json模块读取并再次写入时,它将表情符号转换为这样的东西:"ud83dude00"。所以我的emoji "😀"成为" ud83d ude00"在写作。我使用下面的代码:

import json
with open("emoji-by-category.json", encoding='utf-8', errors='ignore') as json_data:
data = json.load(json_data, strict=False)
with open("emoji-by-category2.json", 'w', encoding='utf-8', errors='ignore') as json_file:
json.dump(data, json_file, indent=4)

下面是json文件示例:

[
{
"category": "Smileys & Emotion",
"section": "face-smiling",
"n": "1",
"code": "U+1F600",
"text": "ud83dude00",
"recentlyAdded": false,
"name": "grinning face",
"vendors": {
"Appl": true,
"Goog": true,
"FB": true,
"Wind": true,
"Twtr": true,
"Joy": true,
"Sams": true,
"GMail": true,
"SB": false,
"DCM": false,
"KDDI": false,
"Tlgr": true
},
"tags": [
"face",
"grin",
"grinning face"
],
"keywords": [
"face",
"grin",
"grinning",
"subdivision",
"flag",
":D",
"grinning face"
]
},
{
"category": "Smileys & Emotion",
"section": "face-smiling",
"n": "2",
"code": "U+1F603",
"text": "ud83dude03",
"recentlyAdded": false,
"name": "grinning face with big eyes",
"vendors": {
"Appl": true,
"Goog": true,
"FB": true,
"Wind": true,
"Twtr": true,
"Joy": true,
"Sams": true,
"GMail": true,
"SB": true,
"DCM": true,
"KDDI": true,
"Tlgr": true
},
"tags": [
"face",
"grinning face with big eyes",
"mouth",
"open",
"smile"
],
"keywords": [
"face",
"grinning",
"big",
"eyes",
"mouth",
"open",
"smile",
"subdivision",
"flag",
"grin",
"eye",
":D",
":)",
"grinning face with big eyes"
]
},
{
"category": "Smileys & Emotion",
"section": "face-smiling",
"n": "3",
"code": "U+1F604",
"text": "ud83dude04",
"recentlyAdded": false,
"name": "grinning face with smiling eyes",
"vendors": {
"Appl": true,
"Goog": true,
"FB": true,
"Wind": true,
"Twtr": true,
"Joy": true,
"Sams": true,
"GMail": true,
"SB": true,
"DCM": false,
"KDDI": false,
"Tlgr": true
},
"tags": [
"eye",
"face",
"grinning face with smiling eyes",
"mouth",
"open",
"smile"
],
"keywords": [
"eye",
"face",
"grinning",
"smiling",
"eyes",
"mouth",
"open",
"smile",
"subdivision",
"flag",
"grin",
"joy",
"funny",
"haha",
"laugh",
":D",
":)",
"grinning face with smiling eyes"
]
}
]

使用

with open("emoji-by-category2.json", 'w', encoding='utf-8', errors='ignore') as json_file:
json.dump(data, json_file, indent=4, ensure_ascii=False)

读取文档JSON编码器和解码器:

基本用法:

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

…如果ensure_ascii为true(默认),输出保证为将所有传入的非ascii字符转义。如果ensure_ascii是False,这些字符将按原样输出。…

相关内容

  • 没有找到相关文章

最新更新