为什么我从页面传给controller的数据存入mysql数据库之后都会在前面加上“--- -”字符
为什么我从页面传给controller的数据存入mysql数据库之后都会在前面加上“--- -”字符。
我创建的数据库编码格式UTF-8,页面也是为UTF-8.
[解决办法]
mysql 4.1的字符集支持(character set support)有两个方面:字符集(character set)和排序方式(collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
当我们按照原来的方式通过php存取mysql数据库时,就算设置了表的默认字符集为utf8并且通过utf-8编码发送查询,你会发现存入数据库的仍然是乱码。
其实简单的方法是通过phpmyadmin来设置。
设置下面几项:
1: 语言设置为 chinese (zh-utf-8)
2: mysql 字符集: utf-8 unicode (utf8)
3: mysql 连接校对: utf8_general_ci
4: 新增数据库和数据表的时候,整理项选择 utf8_general_ci
通过以上设置,在phpmyadmin中操作和查询的时候,中文字符都不会乱码了。
但是你会发现,在php程序中用以前的sql语句查询出来的结果还是乱码,问题就出在connection连接层上。
解决方法是在成功连接数据库之后,发送一句查询语句:
1: $this->linkid = @mysql_connect($this->host, $this->user, $this->password);
2: @mysql_query('set names 'utf8'', $this->linkid);