php - 特殊字符存储为 ?在我的 mysql 数据库中

标签 php mysql

我使用以下代码在我的数据库中存储和更新数据。

<?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_binutf8_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/

相关文章:

mysql - 在 MySQL 中为全文搜索添加一个 *(星号)

mysql - 在 SELECT WHERE 之前添加表索引并在 INSERT 之前删除它们

php - xampp 无法运行,刚刚安装

php - 在 PHP 中使用数组存储多个值

php - 使用 MySQL 和 PHP MySQLi 时如何正确打印斯堪的纳维亚字符 (åäö)?

php - GET参数无法使用php检索

php - Yahoo Fantasy Sports API 未通过身份验证

php - Foreach 循环内有两个查询

mysql - SQL "LIKE"查询找不到我所知道的内容

javascript - 在给定时间停留多个下拉页面