iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么解决关于Python dict存中文字符dumps()的问题
  • 488
分享到

怎么解决关于Python dict存中文字符dumps()的问题

2023-06-25 11:06:06 488人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“怎么解决关于python dict存中文字符dumps()的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决关于Python dict存中文字符dumps()的问题”

本篇内容主要讲解“怎么解决关于python dict存中文字符dumps()的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决关于Python dict存中文字符dumps()的问题”吧!

Background

之前数据库只区分了AndroidiOS两个平台,游戏上线后现在PM想要区分国服,海外服,港台服。这几个字段从前端那里的接口获得,code过程中发现无论如何把中文的value丢到dict中存到数据库中就变成类似这样**"\u56fd\u670d"**

Solution

首先怀疑数据库编码问题,但看了一下数据库其他字段有中文格式的,所以要先check数据库(MySQL)的字符编码。

怎么解决关于Python dict存中文字符dumps()的问题

可以看到明明就TMD是utf-8啊,所以一定不是数据库层出现的问题,回到代码debug

Google一下
这个问题好多都是Python2的解决方案,找到了一个感觉靠谱点的

dict1 = {'name':'张三'}print(JSON.dumps(dict1,encoding='utf-8',ensure_ascii=False))

博客中的解法,但是我的Python版本是3.9,就会报Error如下

Exception in thread Thread-1:Traceback (most recent call last):  File "/usr/local/python3/lib/python3.9/threading.py", line 950, in _bootstrap_inner    self.run()  File "/usr/local/python3/lib/python3.9/threading.py", line 888, in run    self._target(*self._args, **self._kwargs)  File "/home/dapan_ext/project_table.py", line 91, in Http_request    self.get_data(project_response_data)  File "/home/dapan_ext/project_table.py", line 115, in get_data    json.dumps(dict_1, encoding='utf-8', ensure_ascii=False)  File "/usr/local/python3/lib/python3.9/json/__init__.py", line 234, in dumps    return cls(TypeError: __init__() got an unexpected keyWord argument 'encoding'

意思就是:在__init__json这个东东的时候它不认识'encoding'这个argument。

那就翻阅源码康康->->:

def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,        allow_nan=True, cls=None, indent=None, separators=None,        default=None, sort_keys=False, **kw):    """Serialize ``obj`` to a JSON fORMatted ``str``.    If ``skipkeys`` is true then ``dict`` keys that are not basic types    (``str``, ``int``, ``float``, ``bool``, ``None``) will be skipped    instead of raising a ``TypeError``.    If ``ensure_ascii`` is false, then the return value can contain non-ASCII    characters if they appear in strings contained in ``obj``. Otherwise, all    such characters are escaped in JSON strings.    If ``check_circular`` is false, then the circular reference check    for container types will be skipped and a circular reference will    result in an ``OverflowError`` (or worse).    If ``allow_nan`` is false, then it will be a ``ValueError`` to    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in    strict compliance of the JSON specification, instead of using the    javascript equivalents (``NaN``, ``Infinity``, ``-Infinity``).    If ``indent`` is a non-negative integer, then JSON array elements and    object members will be pretty-printed with that indent level. An indent    level of 0 will only insert newlines. ``None`` is the most compact    representation.    If specified, ``separators`` should be an ``(item_separator, key_separator)``    tuple.  The default is ``(', ', ': ')`` if *indent* is ``None`` and    ``(',', ': ')`` otherwise.  To get the most compact JSON representation,    you should specify ``(',', ':')`` to eliminate whitespace.    ``default(obj)`` is a function that should return a serializable version    of obj or raise TypeError. The default simply raises TypeError.    If *sort_keys* is true (default: ``False``), then the output of    dictionaries will be sorted by key.    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the    ``.default()`` method to serialize additional types), specify it with    the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.    """    # cached encoder    if (not skipkeys and ensure_ascii and        check_circular and allow_nan and        cls is None and indent is None and separators is None and        default is None and not sort_keys and not kw):        return _default_encoder.encode(obj)    if cls is None:        cls = JSONEncoder    return cls(        skipkeys=skipkeys, ensure_ascii=ensure_ascii,        check_circular=check_circular, allow_nan=allow_nan, indent=indent,        separators=separators, default=default, sort_keys=sort_keys,        **kw).encode(obj)

注意到这里:

If ``ensure_ascii`` is false, then the return value can contain non-ASCII
    characters if they appear in strings contained in ``obj``. Otherwise, all
    such characters are escaped in JSON strings.

意思就是:
ensure_ascii置为false时,返回值就可以返回非ASCII编码的字符,这岂不正是我们需要的,Got it!

回去改代码:

server_name = str(related['name'])# print(server_name)dict_1 = {'appKey': related['appKey'], 'client': related['client'], 'name': server_name}crasheye.append(dict_1)crasheyes = json.dumps(crasheye, ensure_ascii=False)

完美解决问题(●ˇ∀ˇ●)

怎么解决关于Python dict存中文字符dumps()的问题

到此,相信大家对“怎么解决关于Python dict存中文字符dumps()的问题”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么解决关于Python dict存中文字符dumps()的问题

本文链接: https://www.lsjlt.com/news/304291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么解决关于Python dict存中文字符dumps()的问题
    本篇内容主要讲解“怎么解决关于Python dict存中文字符dumps()的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决关于Python dict存中文字符dumps()的问题”...
    99+
    2023-06-25
  • 关于Python dict存中文字符dumps()的问题
    Background 之前数据库只区分了Android,IOS两个平台,游戏上线后现在PM想要区分国服,海外服,港台服。这几个字段从前端那里的接口获得,code过程中发现无论如何把中...
    99+
    2024-04-02
  • php截取中文字符串的问题怎么解决
    本篇内容主要讲解“php截取中文字符串的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php截取中文字符串的问题怎么解决”吧!PHP是一款广泛使用的编程语言,在开发网站与应用程序上有...
    99+
    2023-07-05
  • 怎么解决Python字符串替换的问题
    本篇内容主要讲解“怎么解决Python字符串替换的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Python字符串替换的问题”吧!项目中遇到一个字符串替换的问题。我们知道字符串替换可...
    99+
    2023-06-16
  • 怎么解决IE8中关于margin collapsing的问题
    本篇内容介绍了“怎么解决IE8中关于margin collapsing的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • 关于 go 语言中符文、字符串和 unicode 字符的疑问
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《关于 go 语言中符文、字符串和 unicode 字符的疑问》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要...
    99+
    2024-04-04
  • mysql5.5字符集问题怎么解决
    本篇内容介绍了“mysql5.5字符集问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装了个5...
    99+
    2024-04-02
  • 解决MySQL无法输入中文字符的问题
    文章目录 问题描述问题排查解决方案1️⃣创建数据库时设置字符集为utf82️⃣修改数据库配置文件【比较麻烦】 写在最后 前几日在使用MySQL数据库的时候,出现了一处保存,故作此记录✍ 问题描述 下面是我这样exa...
    99+
    2023-08-16
    数据库 mysql sql
  • Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决
    1.字符串的字符转换1.1.字符转换的概念在前面说的的字符串替换,是将字符串中的一个子串替换成了新的子串,如果我们想对字符串中的某些字符进行转换,也就是对字符串中的单个字符进行替换,可以调用方法maketrans和translate来实现。...
    99+
    2023-05-23
    Python
  • linux文件名特殊字符问题怎么解决
    在Linux系统中,文件名可以包含许多特殊字符,但有些字符在命令行下可能会引起问题。以下是一些常见的解决方法:1. 使用反斜杠转义特...
    99+
    2023-09-16
    linux
  • Delphi连接mysql时的中文字符乱码问题怎么解决
    本篇内容主要讲解“Delphi连接mysql时的中文字符乱码问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Delphi连接mysql时的中文字符乱码...
    99+
    2024-04-02
  • Golang中字符串拼接问题怎么解决
    本篇内容主要讲解“Golang中字符串拼接问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中字符串拼接问题怎么解决”吧!1.概述Go的字符串是一个不可改变的数据结构,这和其...
    99+
    2023-07-06
  • postgresql之关于to_date()问题怎么解决
    这篇文章主要介绍“postgresql之关于to_date()问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“postgresql之关于to_date()问题怎么解决”文章能帮助大家解决问...
    99+
    2023-07-05
  • 关于c语言中输出字符指针的相关问题
    目录c语言输出字符指针问题例如定义一个 char * p = "hello";的字符指针c语言指针求字符串长度c语言输出字符指针问题 例如定义一个 char * ...
    99+
    2024-04-02
  • mysql中文字符的问题怎么处理
    这篇文章主要介绍mysql中文字符的问题怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql中文字符的问题mysql5.1上成功更改的例子:    &...
    99+
    2024-04-02
  • Java中怎么解决关键字封锁问题
    Java中怎么解决关键字封锁问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实例方法中加入sychronized关键字封锁的是this对象本身,而在静态方法中加入sych...
    99+
    2023-06-17
  • 关于Java中String创建的字符串对象内存分配测试问题
    一、创建String对象的两种常用方法比较 举例说明 String str1 = "Java天下第一"; //方法1 String str2 = new String("Java...
    99+
    2024-04-02
  • C++怎么解决字符串中第二大数字问题
    本篇内容主要讲解“C++怎么解决字符串中第二大数字问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么解决字符串中第二大数字问题”吧!字符串中第二大的数字给你一个混合字符串 s...
    99+
    2023-07-04
  • 怎么解决关于数据库insert问题
    本篇内容主要讲解“怎么解决关于数据库insert问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决关于数据库insert问题”吧!早上对几个10几G,上...
    99+
    2024-04-02
  • MySQL字符集出错的问题怎么解决
    本篇内容主要讲解“MySQL字符集出错的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL字符集出错的问题怎么解决”吧!  实例讲解...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作