我需要将它保存到数据库(mysql)并显示回来。 (我的数据库是utf_general_ci)
我αalivisvisłєłiкєαiя--- 我αмαsiмρøяŧαиŧαsøxygєи--- 我是αi iŧЋєŧЋєŧЋємммммм 我αααłwαysŧЋєяєєøЋєłρøŧЋєяz--- 我在这里忙碌着ŧєєєєєє 我αмŧЋєøєєwЋøcαяєz--- 我łøvєŧøsєєøŧЋєяłαugЋiиg 我αмŧЋєøєєwЋøbøяяøwøŧЋєяzsøяяøw 我αøŧЋєøєєwЋøzиαugЋŧybuŧиicє 我αмłøsŧiимyŧЋøugЋŧs--- 我łøvєŧøŧαłк--- 我łøvєєøsЋαяє--- 我αмяєαdyŧøgøαиywЋєяє--- 我łøvєŧøƒłybuŧdøи'ŧЋαvєwiиgs- 我知道ŧøøøøЋЋŧЋєsкyłiмiŧs--- 我αмєviłbuŧиøŧdєvił--- 我єєvєяƒøłłøwαиyŧяєиd--- 我αмƒuиłøviиg--- suмŧiмєłøvєєøbєαłøиє--- 我łøvєŧøłivє---
但是,在保存和检索数据时,这就是我得到的
â��â�¥Ã ±LLø¸£Ãïï½½ïïï½½½½½½ï¿好不¥Â¢ï¿½ï¿½ â�ï&安培; iqu
请帮忙吗?是否可以更改数据库的排序规则或某些可以处理此问题的PHP函数?
答案 0 :(得分:9)
您需要使用'SET NAMES 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'");
答案 1 :(得分:5)
我必须指出你对乔尔的文章The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。本文解释了什么是字符编码,为什么使用它们以及如何管理它们。
您的数据显然包含了大量的Unicode字符,因此您必须了解PHP和MySql如何处理字符编码(在您的配置中)以及要调用哪些函数以确保编码已翻译在正确的时间正确。您粘贴的样本(不正确)数据表明某处肯定存在编码不匹配。
答案 2 :(得分:4)
请尝试以下步骤:
utf8_general_ci
)。SET NAMES 'utf8';
这应该有效,但是如果你从用户那里收到数据(通过GET,POST或COOKIE参数),你可能想要关注一些additional steps described in this answer。
另外,关于以下元标记:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
或等效的PHP标题:
header('Content-Type: text/html; charset=utf-8');
您只需要那些显示 UTF-8数据,它不会干扰存储过程,当然,使用它并不会有害。 =)
答案 3 :(得分: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,因此请确保发送该标题!
答案 4 :(得分:1)
要使用没有编码问题的特殊字符,请尝试遵循以下4条规则:
此文字来自here。