我使用以下代码在我的数据库中存储和更新数据。
<?php
header("Content-Type: text/html;charset=UTF-8", true);
mysql_connect("localhost", "test", "test") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
// mysql_set_charset('UTF8');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
mysql_query("UPDATE `test`.`english` SET age = '".$age."', city = '".mysql_real_escape_string($_REQUEST['city'])."', aboutMe = '".$_REQUEST['about']."' WHERE `english`.`username` = '".$_REQUEST['username']."' LIMIT 1 ;")
or die(mysql_error());
代码运行良好。但是如果字符串,例如“城市”包含 ä,ö,ü 它存储为 ? 例如,单词“Bär”转到“B?r”。
我已经添加了这些 utf8 内容,但没有帮助。 服务器只支持php4.x
编辑:数据库使用 latin1_general_ci 作为排序规则。
最佳答案
使用 utf8 作为排序规则,可能是 utf8_bin
或 utf8_unicode_ci
(ci 表示它不区分大小写,因此像“John”=“JOHN”这样的比较会返回 true)。您可以通过在 MySQL 中运行以下查询来执行此操作:
alter table `test`.`english` convert to character set utf8 collate utf8_unicode_ci;
关于php - 特殊字符存储为 ?在我的 mysql 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542593/