- 論壇徽章:
- 0
|
你隨便建立一個數(shù)據(jù)庫,然后將如下表、視圖、數(shù)據(jù)導入,然后用mysqldump導出整個數(shù)據(jù)庫檢查導出的文件中中英文顯示是否正常。我將my.ini文件 數(shù)據(jù)庫 表等字符集設為latin1 gb2312 gbk utf8 等均有不能正常顯示的現(xiàn)象。本來使用latin1字符集 插入中文 顯示中文數(shù)據(jù)庫均沒問題,但是后來建立了視圖,as后面的中文導出也沒問題,但有一個表的字段(czy.leve)是數(shù)字 我需要在視圖中將其轉換為中文顯示 所以加了if條件,沒想到的是 無論怎樣設字符集 當導出數(shù)據(jù)庫后 這個視圖中的if中的中文均顯示為`????` 如下蘭字處是導出后的效果,但將數(shù)據(jù)庫設為utf8時 這個視圖導出中文顯示沒問題 但其它漢字顯示或英文字段名顯示就有問題,反正視圖中if條件正常了,就有的地方不正常。
if((`czy`.`leve` = 1),
_latin1'?????',
if((`czy`.`leve` = 2),
_latin1?????',
_latin1?????')) AS `級別`
其中_latin1是我修改數(shù)據(jù)庫字符集造成的 大家可以隨便更改數(shù)據(jù)數(shù)據(jù)庫、表字符集。
求教如何設置數(shù)據(jù)庫字符集 或加什么參數(shù)導出數(shù)據(jù)庫 視圖中的漢字不出現(xiàn)以上問題,大家在你的機器上試試。我原以為mysql5.10版本的問題 結果更換了5.0.22也是如此。
注:中文不正常只出現(xiàn)在視圖中 其它地方?jīng)]問題,另外 如果視圖中使用了如
select from table where fieldname='漢字' 形式 導出數(shù)據(jù)庫后'漢字' 這部分也是亂碼'?????'。
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,'李四'); |
|