2009-12-18 152 views
1

我需要保存这个数据库上(MySQL的),并显示了回去。 (我的数据库是utf_general_ci)字符编码问题

我αмiиvisibłєłiкєαiя--- 我αмαSiмρøяŧαиŧαSøxygєи--- 我αмłiviиgiиŧЋєwøяłdøƒмydяєαмz 我αмαłwαysŧЋєяє到ЋєłρøŧЋєяz--- 我αм繁忙,但иєvєяigиøяєαиyøиє 我αмŧЋєøиєwЋøcαяєz--- 我łøvє到sєєøŧЋєяłαugЋiиg 我αмŧЋєøиєwЋøbøяяøwøŧЋєяzsøяяøw 我αмŧЋєøиєwЋøzиαugЋŧy但иicє 我αм失去iимyŧЋøugЋŧs --- Iłøvєŧøŧαłк--- 我łøvє到sЋαяє--- 我αмяєαdy去αиywЋєяє--- 我łøvє到ƒły但døи'ŧЋαvєwiиgs- 我wαиŧ太ŧøucЋŧЋєsкyłiмiŧs--- 我αмєvił但иøŧdєvił- - 我иєvєяƒøłłøwαиyŧяєиd--- 我αмƒuиłøviиg--- suм​​ŧiмєłøvє到bєαłøиє--- 我łøvє到łivє---

然而,当数据被保存和检索,这就是我得到

¢?���AA±1.1一节AA£AI ¿½Ã�Ã�Ã�ÃAA£¢?�¥â�� ¢?�ï& iqu

任何帮助吗?是否可以更改数据库的排序规则或某些可以处理此问题的PHP函数?

+1

重复http://stackoverflow.com/questions/1920777/character-encoding-problem – 2009-12-18 07:29:50

+0

尝试在下面的答案中的所有内容。从phpmyadmin一切正常,但不工作从我的网站:(可能是什么原因? – 2009-12-26 08:04:05

回答

9

你需要使用“集名称UTF8”,以确保您的服务器重新使用UTF-8字符集发送结果。例如:

$dbconn = mysql_connect("localhost", "user", "pass") or die(mysql_error()); 
      mysql_select_db('database', $dbconn) or die(mysql_error()); 
      mysql_query("SET NAMES 'utf8'"); 
+0

这实际上工作! – 2009-12-18 15:06:29

+0

但当我插入相同的值一切都熄灭,这是显示Æ – 2009-12-18 15:14:41

+0

你可以发布您的INSERT语句吗? – BenTheDesigner 2009-12-18 16:13:50

5

我必须指向你走向乔尔的文章,题为The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。本文解释了什么是字符编码,为什么使用它们,以及如何管理它们。

您的数据显然包含大量来自各种范围的Unicode字符,因此您必须了解PHP和MySql如何处理字符编码(在您的配置中)以及要调用哪些函数以确保编码在正确的时间正确翻译。您粘贴的示例(不正确)数据表明确实存在编码不匹配的情况。

1

确保MySQL的mysql_query("SET NAMES 'utf8'");运行进行数据传输,然后还要确保每个页面发送一个UTF-8头。

header('Content-Type: text/html; charset=utf-8');

此外,阅读Am I correctly Supporting UTF-8仔细检查所有的一切,运行一些other test data通过它,以确保它的工作原理。并且您在每个页面加载can test for UTF-8

最后,请确保浏览器有你想要的字符集来使用安装,因为一些新的像Chrome浏览器不会自动使用某些字符集。但是,他们都使用UTF-8,所以请确保您发送该头文件!

1

要使用特殊字符编码没有问题,尽量遵循这一规则4:

  1. 创建utf8_general_ci整理的数据库字段
  2. 使查询请求mysql_query(“集名称‘UTF8’;”);任何连接后(需要MySQL的5)
  3. 把元字符集UTF8代码在HTML头块
  4. 读取和写入字符串为db,并没有使用函数utf8_encode或其他功能

本文来源于到html here

4

尝试以下步骤:

  1. 确保您所有的数据库字段设置为存储UTF-8数据(utf8_general_ci)。
  2. 在连接到数据库执行以下查询:SET NAMES 'utf8';
  3. 保存您的PHP文件为UTF-8无BOMthere is a nice free text editor for Windows,让您可以轻松地改变(状态栏上的)文件的编码,请选择UTF-8 Plain

但是,如果您从用户接收数据(通过GET,POST或COOKIE参数),您可能需要遵循一些additional steps described in this answer

此外,关于以下meta标签:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

或者等价的PHP头:

header('Content-Type: text/html; charset=utf-8'); 

你只需要那些显示 UTF-8的数据,不会干扰与存储过程,虽然它不伤害使用它,当然。 =)