2013-04-12 59 views
0

从我的服务器,我创建并执行查询到我的数据库。查询看起来是这样的:MySQL数据库不同插入

INSERT INTO `table`(`attr`) 
VALUES (
    'myText', 
    ... 
); 

插入工作正常,但是当是会将myText(例如)的字符,它插入€(ISO表示)。当我使用这个字符在phpMyAdmin中执行查询时,它的工作原理是。有人能告诉我问题在哪里吗?

注意:在插入到查询中的PHP,myText - 因此它在查询之前未转换为ISO表示。

更新:我使用MySQL 5.5

更新2:我有CHARSET=utf8 COLLATE=utf8_bin在我的桌子。

+0

您使用哪个平台? –

回答

1

MySQL连接后,立即任何查询之前,使用此:

mysql_connect(...); 
mysql_select_db(...); 
mysql_query("SET NAMES 'utf8'"); 

从此,您可以使用查询和UTF-8字符会正确显示。

UPDATE:

不要忘记把<meta http-equiv="Content-Type" content="text/html; charset=utf-8">在文档中。

+0

我想问一个关于您的解决方案的附加信息。如果我有面向对象的体系结构,在哪里可以放置这个'meta'标签?在我的'index.php'中的所有'require'之前? – Tom11

+0

之后无论你的html代码开始。 –

+0

谢谢,它的工作原理。但是没有必要在那里放置''标签。 – Tom11

0

也许你需要的字符串编码..

$myText = utf8_encode('MyText'); 

INSERT INTO `table`(`attr`) 
         VALUES (
         '$myText', 
         ... 
        ); 
+0

这是需要吗?在phpMyAdmin中,没有必要的编码 – Tom11

+0

phpmyadmin将数据放入正确的编码中。注意,在phpmyadmin中,如果您单击一个表并选择Structure选项卡,您还可以看到每个ROW具有哪些编码。在校对之下 – Bolli

+0

在utf8编码之后,我得到这个值:''âÂ,Â' – Tom11

0

结账默认情况下,您的tablecharset documentation

+0

'CHARSET = utf8 COLLATE = utf8_bin' 我不认为有问题。 – Tom11

0

你的MySQL服务器并不期望UTF8的charsetcollations,运行下面的查询第一

SET NAMES 'utf8'; 
+0

我在桌子上有'CHARSET = utf8 COLLATE = utf8_bin'。 – Tom11

+0

'SET NAMES'与表字符集无关,它告诉服务器哪个字符集正在发送。 – punKonsole

0

PhpMyAdmin可能已经正确配置了charset for c连接,但你的脚本没有。

确保您的语句有configured charset correctly例如:

SET CHARACTER SET 'UTF-8'; 
SET NAMES 'UTF-8'; 

前推什么DB(如果你使用latin1代替UTF-8为你的表字符集,你应该使用latin1)。