【发布时间】:2021-05-15 20:56:16
【问题描述】:
我们有一个非常古老的代码库,其中包含php5.2,其中一些甚至在php3 中使用mysql 5.1,我们正在尝试迁移到laravel 7/8。数据库中存储的数据是日文字符,使用latin1编码存储为,
¥í¥°¥¤¥óÀ®¸ù¥í¥°¥¢¥¦¥È¥á¡¼¥ë¥¢¥É¥ì¥¹Êѹ¹
这些数据在使用 php5.2 时显示正确,并且在当前代码库中运行良好,但是当我尝试使用 php5.2 以外的任何版本访问该数据时,我无法获得正确的值。
我尝试过但没有成功的方法。
- 在php文件中用
header更改了文件编码。 - 用
mb_convert_encoding更改了字符串编码。 - 将
php.ini中的default_charset设置为空字符串。
但似乎没有一个解决方案有效。有没有其他方法可以正确显示这些数据?
$dsn = 'mysql:dbname=dbname;host=127.0.0.1;port=3306';
$user = 'root';
$password = '';
$db = new PDO($dsn, $user, $password);
$query = $db->prepare('SELECT * FROM tablename');
if ($query->execute()) {
echo '<ul>';
while ($row = $query->fetch()) {
echo '<li>' . $row['column_name'] . '</li>';
}
echo '</ul>';
}
相同的代码块使用php5.2在浏览器中显示正确的数据,但在php7.3中不起作用,这怎么可能?
【问题讨论】:
-
this info 可能有帮助吗?涉及很多。
-
问题是,我已经有了需要转换的现有数据,以便它们能够使用较新版本的
PHP,而不是建立一个全新的环境。 -
@LalitThapa 您如何看待使用
utf8mb4ạ创建一个新数据库并导入现有数据? -
是的,我已经尝试过了,但在较新版本的 PHP 上也有同样的问题。
标签: mysql laravel encoding php-7.3 php-5.2