1.停止mysql服务:
右键点击“我的电脑”图标,出现右键菜单后左键点击“管理”。d出“电脑管理”对话框后,左键点击“服务与程序”,接着点击“服务”,最后找到mysql服务并将其关闭。
2.进入控制面板,点击卸载程序,进入卸载程序对话框后卸载mysql。
3.组合键W+R进入运行,输入“regedit”,查看下面 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的键值,将mysql键值(mysql、mysqladmin)删掉 。
4.重启系统。
5.再次安装mysql程序。
flask中向mysql中数据 *** 作会出现字符集的问题,比如创建数据模型:db.create_all()时,控制台会出现warring 1366 的字符集警告,是这样的:
这个异常是mysql问题,而非python的问题,这是因为mysql的字段类型是utf-xxx, 而在mysql中这些utf-8数据类型只能存储最多三个字节的字符,而存不了包含四个字节的字符。
解决方法:
修改mysql数据表的字段类型为utf8mb4,只有在mysql5.5之后可以支持。
在flask配置中设置字符集:
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/test?charset=utf8"
php+mysql数据时我们必须保证提交到数据库的编码与mysql编码是一致的这样才可以保存中文不出现问号乱码问题,下面我先整理两个让mysql与页面保证编码一致的方法。解决中文插入数据库乱码的方法:
直接把中文转变成utf-8格式,大多是这个问题导致的。
代码如下复制代码
$str
=
iconv('gbk','utf-8',$str)
如果还不行检查网页编码是否正确:
代码如下复制代码
<?php
header("Content-Type:text/htmlcharset=utf-8")
?>
建表:
代码如下复制代码
Create
TABLE
`net_city`
(
`cityid`
smallint(4)
NOT
NULL
auto_increment,
`cityname`
varchar(80)
NOT
NULL
default
'',
`provinceid`
smallint(2)
NOT
NULL
default
'0',
`inarea`
varchar(5000)
NOT
NULL
default
'',
`outarea`
varchar(5000)
NOT
NULL
default
'',
`tel`
varchar(400)
NOT
NULL
default
'',
PRIMARY
KEY
(`cityid`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
PHP里的代码:
$conn=mysql_connect("localhost",
"用户名",
"密码")
mysql_query("set
names
'utf8'",$conn)
mysql_select_db("
www.111cn.net
数据名",$conn)
$exec="insert
into
net_city
(cityname,inarea,outarea,tel)
values
('".$link_cityname."','".$link_inarea."','".$link_outarea."','".$link_tel."')"
$result=mysql_query($exec,$conn)
if($result){
echo
"1"
}else{
echo
"0"
}
mysql_close($conn)
后来我试了试全部都用成gbk的,也是可以的~
在查询数据时我们直接使用mysql_query()来设置
mysql_query("SET
NAMES
GBK")
//GBK处为编码设置
例子
下面是
"insert.php"
页面的代码:
代码如下复制代码
<?php$con
=
mysql_connect("localhost","peter","abc123")
if
(!$con)
{
die('Could
not
connect:
'
.
mysql_error())
}
mysql_select_db("my_db",
$con)
mysql_query("SET
NAMES
GBK")
//GBK处为编码设置
$sql="INSERT
INTO
person
(FirstName,
LastName,
Age)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"
if
(!mysql_query($sql,$con))
{
die('Error:
'
.
mysql_error())
}
echo
"1
record
added"
mysql_close($con)
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)