- 论坛徽章:
- 0
|
你随便建立一个数据库,然后将如下表、视图、数据导入,然后再导出整个数据库检查导出的文件[/b]中英文显示是否正常。我将my.ini文件 数据库 表等字符集设为latin1 gb2312 gbk utf8 等均有不能正常显示的现象。本来使用latin1字符集 插入中文 显示中文数据库均没问题,但是后来建立了视图,as后面的中文导出也没问题,但有一个表的字段(czy.leve)是数字 我需要在视图中将其转换为中文显示 所以加了if条件,没想到的是 无论怎样设字符集 当导出数据库后 这个视图中的if中的中文均显示为`????` 如下兰字处是导出后的效果,但将数据库设为utf8时 这个视图导出中文显示没问题 但其它汉字显示或英文字段名显示就有问题,反正视图中if条件正常了,就有的地方不正常。
if((`czy`.`leve` = 1),
_utf8'?????',
if((`czy`.`leve` = 2),
_utf8'?????',
_utf8'?????')) AS `级别`
其中utf8是我修改数据库字符集造成的 大家可以随便更改字符集。
求教如何设置数据库字符集 或加什么参数导出数据库 不出现以上问题,大家在你的机器上试试。我原以为mysql5.10版本的问题 结果更换了5.0.22也是如此。
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=gb2312
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,'李四'); |
|