我有一张带有 latin1 字符集的旧表。使用 phpmyadmin,我将其转换为 utf-8 之后,当我用 php 读取数据时,我的数据显示为 ???? ????问号
我的页面字符集是utf-8 我的php没有问题,我也试过了:
@mysqli_query("SET NAMES 'utf8'", $db);
@mysqli_query("SET CHARACTER SET 'utf8'", $db);
@mysqli_query("SET character_set_client = utf8 ",$db);
@mysqli_query("SET character_set_results = utf8 ",$db) ;
@mysqli_query("SET character_set_connection = utf8 ",$db);
在任何查询之前
似乎不起作用,仍然显示为???? ??????
新记录没问题,旧记录不可读
它们存储在数据库中,如:غلامی
有没有办法找回那些旧数据?
最佳答案
我以前做的就是在命令行上走
mysqldump --default-character-set=latin1 ... > file.sql
然后将 file.sql 转换为 UTF(使用 ICONV 或任何其他选项),然后更改表的字符集并使用
mysql --default-character-set=utf8 < file.sql
您可以只使用 phpMyAdmin 的导出选项并像上面的示例一样进行转换,从 phpMyAdmin 更改表中的字符集,然后再次导入它。
我通常在执行此操作之前进行备份会导致错误发生,但它非常简单
关于MySQL 表转换为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491511/