解决django 向mysql中写入中文字符出错的问题

之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用。最后发现,在更改mysql的字符集后,需要重建数据库,才能起作用。

这里完整记录一下解决方案

首先更改mysql的字符集

ubuntu下找到/etc/mysql/my.cnf   在最后添加

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

用mysql -h localhost -u root -p 命令进入mysql 命令行

然后使用 show variables like 'character_set%'; 查看字符集设置,看到 client server database 为utf8即为成功

但是我的django依然报错,只能重建数据库,如果数据库文件不多,重建数据库的工作量其实非常小

首先建立新的数据库,此时默认编码格式就是utf8,已经支持中文、

然后修改settings.py中的database项的name为新的数据库名

最后执行数据库迁移即可,在包含manage.py文件夹目录下

python manage.py makemigrations

python manage.py migrate

即可创建用户表和modle中自定的表格,表结构与原来相同,将数据复制到新表即可

补充知识:解决django字符集 输入汉字之后mysql数据库报错的问题【慎用】

解决思路:

启动mysql数据库 net start mysql

之后: mysql -u root -p

查看数据库字符集 show variables like ‘character%';

发现 character-set-server 和 character_set_database 的值为latin1

解决方案:

编辑查看MySQL文件夹下的my.ini 配置文件

在[mysqld]下添加 character-set-server=utf8

systemctl restart mysql 重启 MySQL Server,再此查看字符集变量,发现已经是utf8

drop database 【已经添加的数据库】 并 create database 【新数据库】

问题解决!

此方法简单粗暴,慎用!数据库里面的文件还要重写,比较麻烦,不过可以在创建数据库之后,添加一条数据,利用自定义的django图形化界面,再添加数据也是可以的。

以上这篇解决django 向mysql中写入中文字符出错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • django 连接数据库出现1045错误的解决方式

    根据菜鸟教程Django教程学习,运行"python manage.py migrate" 报错,出现 django.db.utils.OperationalError: (1045, "Access denied for user '账号'@'localhost' (using password: YES)") 错误. 这种错误指的是连接数据库时账号密码错误. 1.只需要修改setting.py文件里的DATABASES即可:(按照图中注释修改) DATABASE

  • Python+Django+MySQL实现基于Web版的增删改查的示例代码

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最后一节,文章结尾有整个项目的源码地址. 开发环境 开发工具:Pycharm 2020.1 开发语言:Python 3.8.0 Web框架:Django 3.0.6 数据库:MySQL5.7 操作系统:Windows 10 项目实战 1. 创建项目 File->New Project->Django

  • Django配置MySQL数据库的完整步骤

    一.在settings.py中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'django', # 你要存储数据的库名,事先要创建之 'USER': 'django', # 数据库用户名 'PASSWORD': 'django@123', # 密码 'HOST': 'localhost', # 主机 'PORT': '3306', # 数据库使用的端口 } } 二.数据库迁移

  • 解决django 向mysql中写入中文字符出错的问题

    之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用.最后发现,在更改mysql的字符集后,需要重建数据库,才能起作用. 这里完整记录一下解决方案 首先更改mysql的字符集 ubuntu下找到/etc/mysql/my.cnf   在最后添加 [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql]

  • 在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处理一定要按UNICODE编码方式进行处理,也就是说,使用socket发送中文字串时要事先将字串转成UNICODE格式的. 下面是简单的socket通信的代码. //服务端代码 try { IPAddress MyIP = IPAddress.Parse("127.0.0.1″); TcpListen

  • 解决Python3中的中文字符编码的问题

    python3中str默认为Unicode的编码格式 Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等 所以在Python3中必须将str类型转换成bytes类型的 在Python中使用encode的方式可以进行字符的编码 实际用法: >>>a = "中国" >>> a.encode("utf-8") b'\xe4\xb8\xad\xe5\x9b\xbd' >>> a.

  • 解决django后台管理界面添加中文内容乱码问题

    在学习使用django做一个简单的个人博客项目,通过admin后台添加中文文章内容的时候,遇到中文内容显示乱码的问题. 排除了网上资料中的提到的几个问题: 1.数据上传默认采用的是unicode编码 2.与settings.py中的LANGUAGE_CODE无关 3.在model中添加#coding:utf-8也没啥用 最后实际的问题是,我在使用mysql创建数据库时没有使用utf8编码,我重新创建了一个utf8字符集的数据库就解决了. CREATE DATABASE db_name DEFAU

  • 解决Python下json.loads()中文字符出错的问题

    Python:2.7 IDE:Pycharm5.0.3 今天遇到一个问题,就是在使用json.load()时,中文字符被转化为Unicode码的问题,解决方案找了半天,无解.全部代码贴出,很简单的一个入门程序,抓的是有道翻译的,跟着小甲鱼的视频做的,但是他的版本是python3.4,所以有些地方还需要自己改,不多说,程序如下: import urllib#python2.7才需要两个urllib url="http://fanyi.youdao.com/translate?smartresult

  • 解决python ogr shp字段写入中文乱码的问题

    首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法: 我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理: properties = fea.get("properties") pro_json=json.dumps(properties) pro_json.replace('u\'','\'')#将unicode编码转化为中文先处理一下 pro_json=pro_json.decode("unicode-escape") #将unico

  • django连接Mysql中已有数据库的方法详解

    我的Mysql中已经有了项目需要使用的相关数据库,现在需要通过django来获取Mysql里的数据并使用,下面记录配置django与mysql的连接过程. (此处默认您已经建好了django框架,如果没有准备好django,请参照我本篇文章 https://www.jb51.net/article/249861.htm 首先需要在项目的settings.py文件中配置mysql的连接信息:把之前配置的sqlite配置信息替换.之前默认的数据库配置信息如图,是与sqlite连接的 现在我们需要替换

  • Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享

    一.判断字符串中包含中文字符的方法 遍历数组,对每个字节使用string.byte(),发现有大于127的,就是汉字,可以参照下面的代码. 二.计算字符串宽度函数 复制代码 代码如下: -- 计算字符串宽度   local str = "Jimmy: 你好,世界!" local fontSize = 20 local lenInByte = #str local width = 0   for i=1,lenInByte do     local curByte = string.by

  • 使用Python和xlwt向Excel文件中写入中文的实例

    Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对中文不是很亲近.时不时地遇到一点问题很正常,刚刚在写Excel文件的时候就又遇到了这样的问题. 为了能够说明情况,假设我想把当前文件夹中所有的文件名称全都写入到Excel文件中. 当前的目录信息如下: grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/02_blog/2017年/08月$ ls -l total 1464 -rwxrwxrwx

  • 解决Django 在ForeignKey中出现 non-nullable field错误的问题

    在django的model中建立了如下的类 class UserType(models.Model): name = models.CharField(max_length=40, verbose_name=u'用户类型') ........ def __str__(self): return self.name class UserProfile(AbstractUser): usertype = models.ForeignKey(UserType, related_name='user_t

随机推荐