sae+python+Django+mysql 的中文乱码问题。

2015-02-21 22:25:44 +08:00
 dushurenbale
新人写SAE后台服务器,一开始什么都不会,代码都是参考SAE文档的。然后浏览器访问的时候出现了乱码。汉字都被相等数量的问号所代替,而英文和数字正常。汉字在MYSQL里面存储的方式是
varchar(20) utf8_general_ci 是可以没有乱码的。
SAE的MYSQL管理方式是PHPMyAdmin。
Python2.7.3,
DJango1.4,
MySQL存储引擎MyISAM 版本5.5.23-log
DJango的View.py代码如下
#!/usr/bin/python
#-*-coding:utf-8-*-

from django.http import HttpResponse
import sae
from mysql import mysql
from sae.mail import send_mail

def hello(request):
option = "select * from company where id=1;"
result = ''
result = result+str(mysql(option))
return HttpResponse(result)

同级目录有个mysql.py 代码如下
#!/usr/bin/python
#-*-coding:utf-8-*-

import MySQLdb
import sae.const
MYSQL_DB = sae.const.MYSQL_DB
MYSQL_USER = sae.const.MYSQL_USER
MYSQL_PASS = sae.const.MYSQL_PASS
MYSQL_HOST_M = sae.const.MYSQL_HOST
MYSQL_HOST_S = sae.const.MYSQL_HOST_S
MYSQL_PORT = int(sae.const.MYSQL_PORT)

def mysql(option):
connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS)
connection.select_db(MYSQL_DB)
connection.query(option)
r = connection.store_result()
result = r.fetch_row()
return result
尝试过connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS)
这句改成connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS,charset='utf8') 但是charset报错,出了一个TYPEERROR。invaild keyword 什么的。
去看MySQLdb 好像必须是connect()函数才可以用这个charset。但是SAE官方文档给了connection()。我不知道connection()怎么用。而connect()在SAE环境下不会用。求求各位大神帮忙解决。。
4379 次点击
所在节点    Python
5 条回复
geeklian
2015-02-22 01:12:13 +08:00
好吧...虽然我没用过sae

但为啥django要写的这么不django,sae所限么?直接orm也会编码出问题么。
imlonghao
2015-02-22 09:58:49 +08:00
option = "select * from company where id=1;"

需要这样的还叫Django.............
imlonghao
2015-02-22 10:00:11 +08:00
如果是我,我会在
setting.py里面把这个设置了
import sae.const
MYSQL_DB = sae.const.MYSQL_DB
MYSQL_USER = sae.const.MYSQL_USER
MYSQL_PASS = sae.const.MYSQL_PASS
MYSQL_HOST_M = sae.const.MYSQL_HOST
MYSQL_HOST_S = sae.const.MYSQL_HOST_S
而不是自己重写查询
dushurenbale
2015-02-22 14:08:55 +08:00
好吧。。我不知道django的规范写法。。。
全是看样例。然后自己修修补补。。
没敢动setting
因为不太懂django,如果SAE官方没给出代码也不敢用一些模板。。
shiroming
2015-02-23 00:35:07 +08:00
django是在models里面写数据库表和字段的
一般不用你这样写
直接orm views里面导入models
调用表.字段就完事了

没有遇到需要转码的地方 ~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX