php - 如何使用 PEAR DB 从 utf8 编码的 PHP 访问 latin1 编码的数据库

标签 php mysql encoding pear

我正在找到这个问题的一些旧答案,但由于我刚刚遇到这个问题,我重新发布,因为我认为现在有不同的答案。

我有一个用 latin1 编码的 Mysql 数据库 (MariaDB)。服务器升级后,我的一些 php 脚本停止工作。我认为至少 php 在此过程中得到了更新。

我似乎遇到了字符编码问题。

1) 我无法在数据库中插入包含非 ASCII 字符(如 æ、ø 和 å)的字符串值。字符串值来自上传文件的 file_name $_FILES('file')

2) 使用 phpMyAdmin(版本 4.6.4 - 最新 Debian 版本)尝试查询 SELECT * FROM files WHERE filename = '%å%' 没有返回任何结果,尽管有几条记录具有“文件名中包含“å”。 (使用 phpMyAdmin 在 UTF8 编码的数据库上尝试类似的查询,会返回所有行!)。

有一些较旧的说法称 PEAR DB 不支持 UTF8,仅支持 latin1。但这可能不再正确了。我发现有一个 mysql_set_charset( 'UTF8') 应该可以解决这个问题,但我想坚持使用 PEAR DB。

有什么想法吗?

最佳答案

SHOW CREATE TABLE   -- perhaps the charset change in the migration?
SHOW VARIABLES LIKE 'char%'   -- controls the _client_

等等。请参阅 Trouble with UTF-8 characters; what I see is not what I stored 中的“最佳实践”

关于php - 如何使用 PEAR DB 从 utf8 编码的 PHP 访问 latin1 编码的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460062/

相关文章:

MySQL ORDER BY 奇怪的排序

c# - Unicode代理字符编码c#

python - 如何确定特定字符串的编码类型?

mysql - 解密 MySQL 编码

php - getimagesize 和 https

PHP动态数组路径访问

mysql - 如何根据特定数据进行 order_by

mysql浮点存储大小?

PHP 可靠计算立方根

php - 突出显示 sql 结果集中的数据值