我正在尝试在我的数据库中保存法语口音,但它们不会像在DB中那样保存。
例如,“é”保存为“Ô 。
我试图将我的文件设置为“Unicode(utf-8)”,DB中的字段是“utf8_general_ci”以及DB本身。
当我查看我发布的数据时通过使用Firebug的AJAX,我看到重音通过了“é”,所以它是正确的。
谢谢,让我知道您需要更多信息!
答案 0 :(得分:49)
我个人通过添加 MySQL连接代码:
后解决了同样的问题mysql_set_charset("utf8");
或mysqli:
mysqli_set_charset($conn, "utf8");
或mysqli OOP等价物:
$conn->set_charset("utf8");
有时你必须通过添加以下代码来定义主要的php charset :
mb_internal_encoding('UTF-8');
在客户端HTML端,您必须添加以下标头数据:
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
为了使用JSON AJAX结果(例如使用jQuery),您应该通过添加以下内容来定义标题:
header("Content-type: application/json;charset=utf8");
json_encode(
some_data
);
这应该可以解决问题
答案 1 :(得分:6)
最好的办法是您的数据库连接不是UTF-8编码 - 默认情况下通常是ISO-8859-1。
尝试发送查询
SET NAMES utf8;
进行连接后。
答案 2 :(得分:3)
如果你使用PDO,你必须像那样实现:
new \PDO("mysql:host=$host;dbname=$schema", $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
答案 3 :(得分:3)
mysqli_set_charset($ conn,“utf8”);
答案 4 :(得分:1)
您是否查看了http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html:
需要的客户端应用程序 使用与服务器通信 Unicode应该设置客户端 相应的字符集;对于 例如,通过发出SET NAMES'utf8' 声明。 ucs2不能用作 客户端字符集,这意味着 它不适用于SET NAMES或SET 字符集。 (见9.1.4节, “连接字符集和 归类”。)
除此之外:
如果你从你的PHP获取数据 mysql-db(一切都是utf-8)但仍然 得到'?'对于某些特殊字符 你的浏览器(),试试这个:
在mysql_connect()之后,和 mysql_select_db()添加以下行: mysql_query(“SET NAMES utf8”);
为我工作。我先尝试过 utf8_encode,但这只适用于 äüöéè......等等,但不是 kyrillic和其他字符。
答案 5 :(得分:1)
使用UTF8:
在
中设置元数据<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
当你连接到你的mySQL数据库时,强制进行编码,这样你就不必使用你的mysql设置了
$conn = mysql_connect('server', 'user', 'password') or die('Could not connect to mysql server.');
mysql_select_db('mydb') or die('Could not select database.');
mysql_set_charset('utf8',$conn); //THIS IS THE IMPORTANT PART
如果您使用AJAX,请按以下方式设置编码:
header('Content-type: text/html; charset=utf-8');
答案 6 :(得分:0)
你需要a)确保你的表使用的字符编码可以编码这些字符(UTF-8往往是最近的编码)和b)确保你的表单提交被发送到数据库采用相同的字符编码。您可以通过将HTML / PHP /任何文件保存为UTF-8,并在头部包含一个告诉浏览器使用UTF-8编码的元标记来完成此操作。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
哦,不要忘记C,当连接到数据库时,确保通过执行SET NAMES charset = utf8实际使用正确的字符集(可能不是正确的语法,我将不得不查看它应该是什么,但它将沿着这些方向)
答案 7 :(得分:0)
PHP(.net)建议在使用SET NAMES utf8之类的查询进行连接后设置字符集,因为在MySQL语句中转义数据的功能可能无法正常工作。
不要使用SET NAMES utf8,而是使用适当的... _ set_charset()函数(或方法),以防您使用PHP。