使用DJANGO+MYSQL开发时,开启django admin, auth, 然后在后台界面添加中文,数据库保存成功,但是在查询时会报错:
TemplateSyntaxError at /admin/auth/group/
Caught DjangoUnicodeDecodeError while rendering: 'ascii' codec can't decode byte 0xe6 in position
0: ordinal not in range(128). You passed in <Group: [Bad Unicode data]> (<class 'django.contrib.auth
.models.Group'>)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/auth/group/
Django Version: 1.3
Exception Type: TemplateSyntaxError
Exception Value:
Caught DjangoUnicodeDecodeError while rendering: 'ascii' codec can't decode byte 0xe6 in position 0:
ordinal not in range(128). You passed in <Group: [Bad Unicode data]> (<class 'django.contrib.
auth.models.Group'>)
Exception Location: D:\opt\Python27\lib\site-packages\django\utils\encoding.py in force_unicode, line 93
Python Executable: D:\opt\Python27\python.exe
Python Version: 2.7.2
..................
使用的是django自带的模块,应该不会有问题。而且同样的代码在Sqlite3下运行正常,就此判断可以得出应该是Mysql的编码问题。
在创建数据的时候的编码是utf-8的,数据库校对规则为utf8_bin,改成utf8_generial_ci后就正常了。
附:
引用
校对规则一般有这些特征:
· 两个不同的字符集不能有相同的校对规则。
· 每个字符集有一个默认校对规则。例如,latin1默认校对规则是latin1_swedish_ci。
· 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
引用
ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;
bin 是二进制, a 和 A 会别区别对待.
例如你运行:
SELECT * FROM table WHERE txt = 'a'
那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.
分享到:
相关推荐
在使用Django开发Web应用程序的过程中,遇到中文乱码问题是很常见的困扰。本文将详细解析Django项目中因中文导致的乱码报错的几种常见情况及其解决方案。 1. **代码中的中文注释问题** 当Python源代码(.py文件)...
在MySQL数据库中,可以通过执行特定的SQL语句来创建使用utf8字符集的数据库,例如:`CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;`。这里`DEFAULT CHARACTER SET utf8`指定了...
这个问题通常是由于字符编码不匹配导致的,特别是当MySQL数据库的字符集不支持UTF-8时,会出现乱码或者写入失败的错误。本文将详细阐述解决这个问题的步骤。 首先,确保MySQL服务器配置支持UTF-8字符集。在Ubuntu...
下面介绍一下django增删改查操作: 1、view.py # -*- coding: utf-8 -*- from __future__ import unicode_literals ...# 解决乱码 import sys reload(sys) sys.setdefaultencoding('utf-8') # 数据库操作 def te
最近一段时间学习Django,在进行与MySQL数据联合使用的插入数据的时候遇到下边的问题: /usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg/django/db/backends/mysql/base.py:109: ...
例如,如果你在Django中遇到乱码,你可能需要在数据库配置中指定`charset='utf8'`,并在读取文件或处理数据时使用适当的编码,如`open('filename', encoding='utf-8')`。在导出数据时,确保使用`utf-8`编码写入文件...
在GAE上运行Django-CMS时,可能会遇到字符编码问题,导致网页在浏览器中显示正常,但查看源代码时出现乱码。这个问题通常与字符集设置、响应头或者模板渲染有关。 首先,我们需要理解字符编码的基础知识。在Web开发...
本项目使用了Python的Django框架进行后端开发,配合MySQL数据库存储数据,并包含了前端资源,同时关注了图形验证码的生成和响应编码问题。以下是对这些关键知识点的详细说明: 1. Django框架:Django是一个高级的...
1. **数据库设计**:使用MySQL数据库,可能包括员工表、部门表、职位表、工资表、考勤记录等,需要设计合理的数据模型以支持高效查询和更新。 2. **前后端分离**:前端可能使用HTML、CSS和JavaScript实现用户界面,...
MySQL数据库(5.x或8.x)需要设置为utf8mb4编码,以处理中文文本。在PyCharm中调试时,务必选择正确的运行路径,并确保所有代码文件编码为UTF-8,避免中文处理时出现乱码问题。 系统架构方面,采用了Django的MVT...
在搭建过程中,这将指导用户如何配置服务器环境,安装必要的软件,比如Web服务器(如Nginx或Apache)、后端框架(如Node.js、Django或Flask)、数据库管理系统(如MySQL、PostgreSQL或MongoDB)等。 "前端"目录可能...
3. 数据库操作:商城程序需要对商品、用户信息等进行持久化存储,因此需要了解数据库操作,尤其是关系型数据库如MySQL或非关系型数据库如MongoDB。 4. 前端开发:商城的用户界面需要使用HTML、CSS和JavaScript等...
这需要数据库支持,可能是关系型数据库如MySQL、PostgreSQL,或者是非关系型数据库如MongoDB。数据库设计需要考虑数据模型,如何高效地存储和检索数据,以及安全性问题。 4. **前端设计**:前端设计包括用户体验、...
5. **数据库设计**:根据项目需求选择合适的数据库类型,如关系型数据库MySQL或非关系型数据库MongoDB,并进行数据模型设计。 6. **测试与调试**:在开发过程中和完成后,需要进行单元测试、集成测试和系统测试,以...
在解压和查看源码时,确保使用正确的字符编码,例如UTF-8,以避免出现乱码情况。 开发这样的工具,开发者需要具备以下技能: 1. 熟练掌握前端开发语言(HTML、CSS、JavaScript)和库/框架(如React、Vue或Angular)...
文件名"Char"可能指的是字符编码或者字符集,这是编程中非常基础但至关重要的概念,尤其是处理多语言聊天时,正确设置字符编码(如UTF-8)至关重要,以免出现乱码问题。 总之,聊天小程序是一个综合性的项目,涵盖...
2. **技术选型**:选择合适的网站开发语言(如HTML、CSS、JavaScript、PHP、Python等)、数据库系统(如MySQL、MongoDB等)、前端框架(如React、Vue.js、Angular等)和后端框架(如Django、Express、Laravel等)。...