如何让UTF8使用mysql和php正常工作?

如何让UTF8使用mysql和php正常工作?

问题描述:

我有一个数据库,其中表编码为utf8。我有一个韩国的价值。这些字符在数据库中显示得很好。但是当它们从数据库中回显时,我会看到一堆问号。如何让UTF8使用mysql和php正常工作?

这里是我的代码,在连接和select_db语句后:

mysql_query('SET NAMES utf8'); 
$query = 'SELECT * FROM english WHERE id = ' . $_GET['dealerID']; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

什么我错在这里做什么? (是的,'英文'是正确的表格)。我尝试了下面的Michael的建议,将表格编码为utf8_general_ci,我得到一个MySQL错误。建议?什么是字符集的正确名称?

如果我运行在phpMyAdmin查询,我得到서울시서초구서초1동1425至1410年세중프라자4층/

+0

看起来没问题(第2行的SQL注入漏洞除外)。什么是您的网页/控制台编码? – Piskvor 2011-04-19 20:21:27

+0

我试着用utf8的头文件命令设置页面,这没有帮助。现在它是iso-2022-kr – sehummel 2011-04-19 20:22:30

+1

只需要注意.. $ _GET ['dealerID']应该被包装在mysql_real_escape_string中以防止sql注入。 – 2011-04-19 20:23:08

评论this guide其中约UTF8,MySQL和PHP谈到一起。

摘要:

  1. 确保浏览器知道的页面是UTF8

    < PHP的头?( “内容类型:text/html的;字符集= UTF8”); ? >

  2. 需要在MySQL表为UTF-8进行设置,以及数据库中的字符串字段

    utf8_general_ci

  3. 告诉PHP,当它谈论到MySQL是UTF8谈

    mysqli_set_charset('utf8');

以下是一些more details以及。

+0

看了一下,我不确定这可以帮助我,因为我需要在“charset = iso-2022-kr”中对页面进行编码,以便可以显示嵌入的韩语。建议? – sehummel 2011-04-19 20:29:27

+0

你确定这是正确的表编码。当我导入时,我得到#1115 - 未知字符集:'utf8_general_ci' – sehummel 2011-04-19 20:33:33

+0

@ shummel7845你说的是两件事情有冲突。要么你的字符串是UTF8格式,要么是iso-2022-kr ......这是什么?你的代码假设他们在utf8中,所以我不确定你为什么一直引用iso-2022-kr。 – 2011-04-19 20:35:13