新人写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环境下不会用。求求各位大神帮忙解决。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/172100
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.