插入MySQL DB时出现字符问题

时间:2013-11-12 18:59:20

标签: php mysql character-encoding

在插入数据库时​​出现奇怪字符的问题,已经不知疲倦地试图找出问题,但我没有想法......

基本上,如果我像这样插入这些数据(这只是测试):

  $valy = "…industry's favorite </em><strong><em>party of the year</em></strong><em>, </em><a href='http://www.unitingagainstlungcancer.org/getinvolved/strolling-supper-with-blues-news'><span class='s1'><em>Joan's…";
  $valy = mysql_real_escape_string($valy);

  $query = "INSERT INTO test_table (data) VALUES ('".$valy."')";
  mysql_query($query,$dbhandle);

这将最终出现在数据库中(注意A字符):

“...业界最喜欢的 年度派对 http://www.unitingagainstlungcancer.org/getinvolved/strolling-晚饭与 - 蓝调新闻&GT;琼的......“

我试图排列所有角色设置:

php default_charset = utf-8
mysql table & row charset = utf-8
Mysql instance variables:
character set client    utf8
(Global value)  latin1  
character set connection    utf8    
(Global value)  latin1  
character set database  latin1  
character set filesystem    binary  
character set results   utf8    
(Global value)  latin1  
character set server    latin1  
character set system    utf8    

这个问题可能是什么?

2 个答案:

答案 0 :(得分:1)

您可能缺少的一件事是您设置连接时。在那里你还应该将编码设置为utf8。

示例:

$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);

但是,不要使用mysql扩展名,不推荐使用它:http://php.net/manual/en/function.mysql-set-charset.php

答案 1 :(得分:1)

尝试将mysql连接设置为UTF-8:

mysql_query("SET NAMES 'utf8'");