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
。我是否混淆了什么或者正确的方法是什么?
答案 0 :(得分:3)
在MySQL中,各个列都有一个实际的字符集设置。其他任何东西只有默认字符集设置。这意味着如果没有为列显式指定字符集,则使用其表的默认字符集。如果没有,则使用它所在的数据库的默认值。如果没有,则使用服务器默认值。服务器,数据库和表中的每一个都有一个单独的默认设置,它会覆盖下一个更高的默认值。
您所做的只是设置数据库的默认值,但您的表仍设置了单独的默认值。您必须为每个表更改它。