环境 windows xp
Apache2.2
PHP 5.2.5
数据库 网页 都使用 UTF-8编码
最开始我用PHPMaker5,自动生成了代码来读取数据库中的数据,结果读出的数据皆为乱码,于是在网上寻找相关解决方法,后来用出现频率最高的
mysql_query("set names utf8")
解决了显示问题。
之后发现中文无法插入,原有的中文记录也无法在我生成的PHP上修改。。。。
而通过phpmyadmin操作更改和插入中文都没有任何问题,于是我认为问题应该在PHP代码上。
-----------
为了找到问题的所在,并解决问题,我通过简单的学习,非常简单的php向mysql写入数据的程序如下
INDEX.PHP
<html>
<head>
<form action="insert.php" method="post">
<title>EQA</title>
</head>
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
<body>
</body>
</html>
INSERT.PHP
<?php
$con = mysql_connect("192.168.3.26","root","mysql-root");
mysql_query("SET NAMES 'utf8'");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("eqatest3", $con);
$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)
?>
-------------------------------------------
然后输入中文,得到以下错误提示,数据库中并没有增加新的数据。。。应该是添加失败了吧
Error: Incorrect string value: '\xB3\xF4\xBC\xB0\xB2\xF1...' for column 'FirstName' at row 1
如果把 mysql_query("SET NAMES 'utf8'"); 拿掉再试的话,数据正常添加,但是进入数据库以后,发现添加进去的是乱码。。。。
INDEX.PHP上面声明网页编码的方法我也都试过,结果都不能令我满意,不是添加不进去,就是添加进去乱码,让我很是郁闷。
不知道有哪位高手可以帮忙看看,我的问题到底出在哪里,有没有什么方法帮忙解决一下啊~~~感谢大家乐~~~
9 个解决方案
#1
所有编码要统一!
#2
用utf8把数据存到数据库里应该没有问题的!
是不是把数据库名子搞错了?
编码要统一!IE是几的?
是不是把数据库名子搞错了?
编码要统一!IE是几的?
#3
追踪几个地方:
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同
#4
添加英文就没问题,所以数据库名字应该没错
我至少可以保证数据库,和php文件中的语句设置是统一的编码啊
IE 7.0
------------
Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?
#5
1.lz可以用PDT打开php文件。当然,如果lz用的IDE支持多种编码,应该可以看到php文件的编码
2.英文的处理没问题的话,程序本身应该不会有什么大问题。
3.文件编码的可能性最大。
#6
是不是因为网页的编码?
网页的编码方式是UTF8么?
如果不是,改下编码,或是:
假设网页编码是GB2312;
用
iconv("UTF-8","GB2312","$firstname") 转换
再存入数据库试试
网页的编码方式是UTF8么?
如果不是,改下编码,或是:
假设网页编码是GB2312;
用
iconv("UTF-8","GB2312","$firstname") 转换
再存入数据库试试
#7
专业维护jsp,php网站
#8
此问题已经解决
统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置
小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答
统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置
小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答
#9
经验啊,我也要加强学习了
#1
所有编码要统一!
#2
用utf8把数据存到数据库里应该没有问题的!
是不是把数据库名子搞错了?
编码要统一!IE是几的?
是不是把数据库名子搞错了?
编码要统一!IE是几的?
#3
追踪几个地方:
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同
建表的时候的编码
PHP文件的编码,保证入库,显示的编码相同,最好保持建表的编码也相同
#4
添加英文就没问题,所以数据库名字应该没错
我至少可以保证数据库,和php文件中的语句设置是统一的编码啊
IE 7.0
------------
Windows下如何察看.php文件的编码?我数据库是用access做好然后用Access2MySQL Pro 5倒过去的,那里的设置就是utf8,用phpmyadmin进去看也是utf8,所以数据库应该是没问题的,我的php语句好像也没什么问题吧?
难不成我的文件有问题?
#5
1.lz可以用PDT打开php文件。当然,如果lz用的IDE支持多种编码,应该可以看到php文件的编码
2.英文的处理没问题的话,程序本身应该不会有什么大问题。
3.文件编码的可能性最大。
#6
是不是因为网页的编码?
网页的编码方式是UTF8么?
如果不是,改下编码,或是:
假设网页编码是GB2312;
用
iconv("UTF-8","GB2312","$firstname") 转换
再存入数据库试试
网页的编码方式是UTF8么?
如果不是,改下编码,或是:
假设网页编码是GB2312;
用
iconv("UTF-8","GB2312","$firstname") 转换
再存入数据库试试
#7
专业维护jsp,php网站
#8
此问题已经解决
统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置
小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答
统一编码的问题
1.html编码,声明中utf-8
2.php 设置 ,在php.ini中,可以在网上找到修改方法
3.数据库设置
小弟这次一直以为1和3搞定就行了
结果发现PHP设置也很重要。。。。
多谢各位解答
#9
经验啊,我也要加强学习了