• Django 连接mysql数据库中文乱码


    Django 连接mysql数据库中文乱码

    版本:CentOS6.8 python3.6.4 django1.8.2 数据库pymysql

    我使用的终端是CentOS终端,CentOS桌面版安装的pycham,windows使用Navicat连接mysql数据库。 
    我遇到的情况大致这样,在CentOS终端进入mysql,然后查询表,中文显示没问题,在Navicat设置了utf-8,中文显示也没问题,但是当我在虚拟环境执行python manage.py shell,使用这个shell查询,中文就乱码了。 
    乱码第一时间想到的是编码问题,在这里省略一万字,通过各种查找资料,修改配置文件等等,然后结合各种资料信息,终于解决了这个问题!直接进入解决方法!

    1:执行pip install PyMySQL ,查找出PyMySQL的安装位置,然后执行cd命令进入,cd /root/.virtualenvs/Cole_py3/lib/python3.6/site-packages/pymysql(这里我的安装目录); 
    2:在这个目录下有一个connections.py文件,直接进入编辑, 
    vim connections.py; 
    3:进入编辑connections.py后,shift +:进入命令行,输入/charset命令查找,打到def ini(),如下图所示:这里写图片描述 
    把charset=’ ‘改为charset=’utf8’;保存退出。 
    4:接下来在终端运行mysql,执行命令mysql -uroot -p; 
    5:运行数据库后,执行命令show variables like “%char%”,如图所示; 
    这里写图片描述 
    有几个变量值是latin1的,要把它们改成utf8;网上有资料说执行这个命令 
    set character_set_client=utf8; 
    这个执行完之后的确是可以修改,但只是临时的,退出数据库重新登陆又恢复原来的数据,要把它永久修改要执行以下;

    6:vim /etc/my.cnf,如下图所示:这里写图片描述

    [client]
    default-character-set=utf8

    [mysql]
    default-character-set=utf8


    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8


    保存退出! 
    7:再去mysql执行命令show variables like “%char%”; ,你会看到如下图所示: 
    这里写图片描述

    修改成功!

    8:如果有用Navicat的话,要去把编码改为自动;右击数据库,选择连接属性——高级——在编码那里选择自动。

    9:最后一步!你现在运行python manage.py shell或者运行mysql,然后查询数据,显示出来还是会乱码的!!!因为这些数据是你之前输入进去的,所以必须要把这些数据删除,然后重新插入!完成!

    Navicat 
    这里写图片描述

    mysql 
    这里写图片描述

    python manage.py shell 
    这里写图片描述

    改完重启mysql数据库

  • 相关阅读:
    几种不同风格的Toast
    [置顶] 如何访问web文件夹之外的文件
    30天自制操作系统笔记(九十)
    tomcat install on Linux
    共享内存使用的基本思路和接口
    30天自制操作系统笔记(九十)——源码
    storm单机版安装配置
    新安装XAMPP,phpMyAdmin错误:#1045
    TI-Davinci开发系列之二使用CCS5.2TI Simulator模拟环境调试DSP程序
    ffmpeg的logo, delogo滤镜参数设置
  • 原文地址:https://www.cnblogs.com/slqt/p/10676790.html
Copyright © 2020-2023  润新知