- 论坛徽章:
- 0
|
你随便建立一个数据库,然后将如下表、视图、数据导入,然后用mysqldump导出整个数据库检查导出的文件中中英文显示是否正常。我将my.ini文件 数据库 表等字符集设为latin1 gb2312 gbk utf8 等均有不能正常显示的现象。本来使用latin1字符集 插入中文 显示中文数据库均没问题,但是后来建立了视图,as后面的中文导出也没问题,但有一个表的字段(czy.leve)是数字 我需要在视图中将其转换为中文显示 所以加了if条件,没想到的是 无论怎样设字符集 当导出数据库后 这个视图中的if中的中文均显示为`????` 如下兰字处是导出后的效果,但将数据库设为utf8时 这个视图导出中文显示没问题 但其它汉字显示或英文字段名显示就有问题,反正视图中if条件正常了,就有的地方不正常。
if((`czy`.`leve` = 1),
_latin1'?????',
if((`czy`.`leve` = 2),
_latin1?????',
_latin1?????')) AS `级别`
其中_latin1是我修改数据库字符集造成的 大家可以随便更改数据数据库、表字符集。
求教如何设置数据库字符集 或加什么参数导出数据库 视图中的汉字不出现以上问题,大家在你的机器上试试。我原以为mysql5.10版本的问题 结果更换了5.0.22也是如此。
注:中文不正常只出现在视图中 其它地方没问题,另外 如果视图中使用了如
select from table where fieldname='汉字' 形式 导出数据库后'汉字' 这部分也是乱码'?????'。
drop table if exists `czy`;
CREATE TABLE `czy` (
`czycode` char(4) NOT NULL,
`czyname` varchar(30) default null,
`leve` tinyint(1) default NULL,
PRIMARY KEY (`czycode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop VIEW if exists `view_czy`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_czy` AS
select
`czy`.`czycode` AS `代码`,
`czy`.`czyname` as `姓名`,
if((`czy`.`leve` = 1),
'操作员',
if((`czy`.`leve`=2),
'出纳员',
if((`czy`.`leve`=9),
'管理员','其它'))) AS `级别`
from
`czy`
order by
`czy`.`czycode`;
INSERT INTO `czy` (`czycode`, `leve`, `czyname`) VALUES
('0000',1,'李三'),
('0001',2,'李四'); |
|