gpt4 book ai didi

php - UTF8 问题 PHP -> MySQL。在数据库中获取问号?

转载 作者:IT老高 更新时间:2023-10-29 00:07:54 24 4
gpt4 key购买 nike

好吧,我现在在 PHP/MySQL/UTF-8/Unicode hell !

我的环境:MySQL:5.1.53服务器字符集:latin1数据库字符集:latin1客户端字符集:latin1连接字符集:latin1

PHP:5.3.3

我的 PHP 文件保存为 UTF-8 格式,而不是 ASCII 文件。

当我建立数据库连接时,在我的 PHP 代码中执行以下操作:

ini_set('default_charset', 'utf-8');
$my_db = mysql_connect(DEV_DB, DEV_USER, DEV_PASS);
mysql_select_db(MY_DB);
// I have tried both of the following utf8 connection functions
// mysql_query("SET NAMES 'utf8'", $my_db);
mysql_set_charset('utf8', $my_db);
// Detect if form value is not UTF-8
if (mb_detect_encoding($_POST['lang_desc']) == 'UTF-8') {
$lang_description = $_POST['lang_desc'];
} else {
$lang_description = utf8_encode($_POST['lang_desc']);
}
$language_sql = sprintf(
'INSERT INTO app_languages (language_id, app_id, description) VALUES (%d, %d, "%s")',
intval($lang_data['lang_id']),
intval($new_app_id),
mysql_real_escape_string($lang_description, $my_db)
);

我的 MySQL 数据库的格式/创建是:

CREATE TABLE IF NOT EXISTS app_languages ( language_id int(10) unsigned NOT NULL, app_id int(10) unsigned NOT NULL, description tinytext collate utf8_unicode_ci, PRIMARY KEY (language_id,app_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

从我的 PHP 代码生成的 SQL 语句如下所示:

INSERT INTO app_languages (language_id, app_id, description) VALUES (91, 2055, "阿拉伯体育新闻和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (26, 2055, "阿拉伯體育新聞和信息")
INSERT INTO app_languages (language_id, app_id, description) VALUES (56, 2055, "בערבית ספורט חדשות ומידע")
INSERT INTO app_languages (language_id, app_id, description) VALUES (69, 2055, "アラビア語のスポーツニュースと情報")

然而,输出出现在我的数据库中是这样的:

|          69 |   2055 | ?????????????????                               |
| 56 | 2055 | ?????? ????? ????? ????? |
| 28 | 2055 | Arapski sportske vijesti i informacije |
| 42 | 2055 | Arabe des nouvelles sportives et d\'information |
| 91 | 2055 | ?????????? |

我做错了什么??

附:我们可以使用 Putty 直接通过 SSH 连接到数据库服务器,并通过命令行粘贴 unicode/多语言插入语句之一。他们成功地工作了!?

感谢您对此的任何启发,这让我发疯。

干杯,杰森

最佳答案

选择数据库后尝试执行以下查询:

SET NAMES 'utf8'

这个查询应该可以解决文件和数据库中不同字符集的问题。

费利克斯

关于php - UTF8 问题 PHP -> MySQL。在数据库中获取问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com