mysql - 我将数据库转换为 utf-8,但旧数据仍在 windows-1251 中。如何转换呢?

标签 mysql database encoding utf-8 type-conversion

我想将数据库转换为 utf-8。到目前为止我所做的是将服务器设置为读取 utf-8 并使用以下查询转换数据库:

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;

现在所有新信息都已可见,之前损坏的东西现在都好了。问题是旧数据被视为 �。在我看来,这是由于旧数据是在 windows-1251 中写入的(我认为至少,但我不是 100% 确定)。

我发现我需要转储数据:

mysqldump -uroot -p database -r utf8.dump

然后导入它:

mysql -uroot -p --default-character-set=utf8 database 
mysql> SET names 'utf8' 
mysql> SOURCE utf8.dump

这是我从这里看到的:https://makandracards.com/makandra/595-dumping-and-importing-from-to-mysql-in-an-utf-8-safe-way

问题是我完全不知道在哪里以及如何做到这一点。 我只能访问网络托管控制面板,并且我在我的计算机上设置任何内容。因此,我不知道如何将数据库连接到命令shell等等。接下来我应该做什么来将数据转换为 utf-8?请提供任何详细的解释,因为这是我第一次做这样的事情。

//我有一台 Mac 和一台 Windows 机器,但目前没有 Linux。

谢谢!

最佳答案

数据库的字符集和排序规则是任何后续创建的表的默认设置是列的默认设置。

对于每个表,这样:

ALTER TABLE table_name CONVERT TO utf8mb4;

关于mysql - 我将数据库转换为 utf-8,但旧数据仍在 windows-1251 中。如何转换呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42684894/

相关文章:

java - 如何使用 onclick 函数从 MYSQL 加载的 ListView 传递值?

java - 每次测试前加载 SQL 数据库

android - 移动设备作为数据库服务器

SQL Server 将十进制解析为 DateTime

android - 添加 header 谷歌 Volley 请求?

MySql 使用 CASE 从另一个表中插入子字符串

mysql - 如何让 MySQL 数据库完全在内存中运行?

php - 在时间戳字段中按日期过滤结果

python - 从数据库获取字符串,输出文件中存在编码问题

javascript - 将表情符号编码为 un​​icode 代码点 - PHP/JS