如何更改数据库的默认字符集

时间:2014-01-26 10:51:15

标签: mysql character-encoding phpmyadmin

SO之前提出的问题是“mysql change default table charset to database charset”。我使用第二个答案将我的数据库默认字符集更改为utf-8。

alter database mydatabase default character set utf8 collate utf8_general_ci;

但是当我使用phpMyAdmin导出数据库时,虽然在顶部我有

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

但对于查询,我有类似

的内容
--
-- Table structure for table `paras`
--

CREATE TABLE IF NOT EXISTS `paras` (
  `p_id` int(11) NOT NULL AUTO_INCREMENT,
  `para` text,
  PRIMARY KEY (`p_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

其中charset=latin1 .IMO应该设置为UTF-8。我是否混淆了什么或者正确的方法是什么?

1 个答案:

答案 0 :(得分:3)

在MySQL中,各个列都有一个实际的字符集设置。其他任何东西只有默认字符集设置。这意味着如果没有为列显式指定字符集,则使用其表的默认字符集。如果没有,则使用它所在的数据库的默认值。如果没有,则使用服务器默认值。服务器,数据库和表中的每一个都有一个单独的默认设置,它会覆盖下一个更高的默认值。

您所做的只是设置数据库的默认值,但您的表仍设置了单独的默认值。您必须为每个表更改它。