用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5169|回复: 8
收起左侧

[讨论/交流] mysql中文乱码问题

[复制链接]
发表于 2009-7-31 14:53:29 | 显示全部楼层 |阅读模式
页面:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
本机可正常显示:
字符集:
MySQL 字符集:  UTF-8 Unicode (utf8)
服务器无法正常显示:
字符集:
MySQL 字符集: cp1252 West European (latin1)
其它配置都是相同的
MySQL 连接校对:utf8_unicode_ci
database配置
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
还有一点比较奇怪,在服务器(phpmyadmin)上用"import"导入sql文本(本机生成的),用phpmyadmin里查看中文字段是乱码。
如果用“sql”里把本机生成的sql文本复制过去生成一下,用phpmyadmin里查看中文字段是正常的
 楼主| 发表于 2009-7-31 14:55:46 | 显示全部楼层
以前没用框架的时候 解决乱码一般用:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
发表于 2009-7-31 16:06:06 | 显示全部楼层
你把你的数据库表的建表 sql 贴出来看看。
 楼主| 发表于 2009-7-31 17:17:44 | 显示全部楼层
/*

MySQL Data Transfer

Source Host: localhost

Source Database: a12

Target Host: localhost

Target Database: a12

Date: 2009-07-31 17:17:04

*/



SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for ad

-- ----------------------------

CREATE TABLE `ad` (
  `id` smallint(6) NOT NULL auto_increment,
  `position_id` varchar(60) collate utf8_unicode_ci default NULL COMMENT '位置',
  `media_type` tinyint(1) default NULL COMMENT '广告类型; 0=图片; 1=flash; 2=代码; 3=文字',
  `ad_code` varchar(2550) collate utf8_unicode_ci default NULL COMMENT '广告链接的表现,文字广告就是文字或图片和flash就是它们的地址,代码广告就是代码内容’',
  `ad_note` varchar(255) collate utf8_unicode_ci default NULL COMMENT '说明(笔记)',
  `ad_link` varchar(255) collate utf8_unicode_ci default NULL COMMENT '广告链接地址',
  `ad_name` varchar(255) collate utf8_unicode_ci default NULL COMMENT '广告记录的广告名称',
  `start_time` datetime default NULL COMMENT '广告开始时间',
  `end_time` datetime default NULL COMMENT '广告结束时间',
  `link_man` varchar(32) collate utf8_unicode_ci default NULL COMMENT '广告联系人',
  `link_email` varchar(32) collate utf8_unicode_ci default NULL COMMENT '广告联系人的邮箱',
  `link_phone` varchar(32) collate utf8_unicode_ci default NULL COMMENT '广告联系人的电话',
  `click_count` mediumint(9) default NULL COMMENT '该广告点击数',
  `enabled` tinyint(1) default NULL COMMENT '该广告是否关闭; 1=开启;0=关闭',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for admin

-- ----------------------------

CREATE TABLE `admin` (
  `aid` smallint(4) NOT NULL auto_increment COMMENT 'id号',
  `user` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT '登陆名',
  `name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT '用户名',
  `password` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT '密码(MD5)',
  `rank` smallint(4) NOT NULL COMMENT '等级ID',
  PRIMARY KEY  (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for admin_access

-- ----------------------------

CREATE TABLE `admin_access` (
  `id` smallint(6) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for admin_rank

-- ----------------------------

CREATE TABLE `admin_rank` (
  `id` smallint(6) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for announcements

-- ----------------------------

CREATE TABLE `announcements` (
  `id` smallint(6) NOT NULL auto_increment,
  `author` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT '发布者用户名',
  `subject` varchar(60) collate utf8_unicode_ci NOT NULL COMMENT '公告标题',
  `message` varchar(255) collate utf8_unicode_ci NOT NULL COMMENT '公告内容',
  `time_start` datetime default NULL COMMENT '公告开始时间',
  `time_end` datetime default NULL COMMENT '公告失效时间',
  `sort` tinyint(4) default NULL COMMENT '排列顺序(预留,好像没用)',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for cms

-- ----------------------------

CREATE TABLE `cms` (
  `id` mediumint(9) NOT NULL auto_increment,
  `title` varchar(255) collate utf8_unicode_ci NOT NULL COMMENT '标题',
  `title_style` varchar(60) collate utf8_unicode_ci default NULL COMMENT '包括颜色和字体样式; 格式如#ff00ff+strong',
  `url_name` varchar(60) collate utf8_unicode_ci default NULL COMMENT '可定义url名称 空取id号命名',
  `time_add` datetime NOT NULL COMMENT '发布时间',
  `link_out` varchar(255) collate utf8_unicode_ci default NULL COMMENT '外部链接',
  `cms_class` smallint(6) default NULL COMMENT '系统分类',
  `desc` text collate utf8_unicode_ci COMMENT '内容',
  `appendix` varchar(255) collate utf8_unicode_ci default NULL COMMENT '附件(用处不大 预留)',
  `keywords` varchar(255) collate utf8_unicode_ci default NULL COMMENT 'TAG',
  `first_author` varchar(60) collate utf8_unicode_ci default NULL COMMENT '原创作者',
  `origin` varchar(255) collate utf8_unicode_ci default NULL COMMENT '信息来源',
  `folder` tinyint(1) default NULL COMMENT '1=发布箱 0=待审',
  `essence_rank` tinyint(1) default NULL COMMENT '精华级别(0-3) 默认为0',
  `sh_rank` tinyint(1) default NULL COMMENT '审核级别(预留)',
  `top_rank_1` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_2` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_3` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_4` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_5` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_6` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `comment_switch` tinyint(1) default NULL COMMENT '允许评论(评论开关)',
  `click_count` mediumint(9) default NULL COMMENT '点击计数',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for cms_class

-- ----------------------------

CREATE TABLE `cms_class` (
  `id` smallint(6) NOT NULL auto_increment,
  `name` varchar(60) collate utf8_unicode_ci NOT NULL COMMENT '分类名称',
  `parent_id` smallint(6) NOT NULL COMMENT '该分类的父id,取值于该表的id字段,0为一级分类',
  `keywords` varchar(60) collate utf8_unicode_ci default NULL COMMENT '分类的关键字',
  `desc` varchar(255) collate utf8_unicode_ci default NULL COMMENT '分类描述',
  `style` varchar(255) collate utf8_unicode_ci default NULL COMMENT '该分类的单独的样式表的包括文件名部分的文件路径',
  `template` varchar(255) collate utf8_unicode_ci default NULL COMMENT '单独模板文件的 无或0为默认',
  `show_in_nav` tinyint(1) default NULL COMMENT '是否显示在导航栏, 0=不;1=显示  可多加几个用于控制',
  `is_show` tinyint(1) default NULL COMMENT '是否在前台页面显示, 1=显示; 0=不显示',
  `sort` tinyint(4) default NULL COMMENT '该分类在页面显示的顺序',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for goods

-- ----------------------------

CREATE TABLE `goods` (
  `id` mediumint(8) NOT NULL auto_increment,
  `sn` varchar(60) collate utf8_unicode_ci default NULL COMMENT '商品的唯一货号',
  `name` varchar(120) collate utf8_unicode_ci default NULL COMMENT '商品的名称',
  `name_style` varchar(60) collate utf8_unicode_ci default NULL COMMENT '包括颜色和字体样式; 格式如#ff00ff+strong',
  `brand_id` smallint(6) default NULL COMMENT '品牌id,取值于brand 的id',
  `cat_id` smallint(4) default NULL COMMENT '商品所属商品分类id,取值goods_class的id',
  `market_price` decimal(10,2) default NULL COMMENT '市场售价',
  `shop_price` decimal(10,2) default NULL COMMENT '本店售价',
  `brief` varchar(255) collate utf8_unicode_ci default NULL COMMENT '商品的简短描述',
  `desc` text collate utf8_unicode_ci COMMENT '商品的详细描述',
  `keywords` varchar(255) collate utf8_unicode_ci default NULL COMMENT '商品关键字,放在商品页的关键字中,为搜索引擎收录用',
  `thumb` varchar(255) collate utf8_unicode_ci default NULL COMMENT '商品在前台显示的微缩图片,在分类筛选时显示的小图片',
  `img` varchar(255) collate utf8_unicode_ci default NULL COMMENT '商品的实际大小图片,进入该商品页时介绍商品属性所显示的大图片',
  `is_best` tinyint(1) default NULL COMMENT '是否是精品; 0=否; 1=是',
  `is_new` tinyint(1) default NULL COMMENT '是否是新品; 0=否; 1=是',
  `is_hot` tinyint(1) default NULL COMMENT '是否热销; 0=否; 1=是',
  `is_promote` tinyint(1) default NULL COMMENT '是否特价促销;0=否; 1=是',
  `promote_price` decimal(10,2) default NULL COMMENT '促销价格',
  `is_delete` tinyint(1) default NULL COMMENT '商品伪删除(也就是暂时不显示)0=否,1=已删除',
  `top_rank_1` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_2` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_3` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_4` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_5` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `top_rank_6` tinyint(1) default NULL COMMENT '置顶级别 0=未选中 1=选中',
  `sort` smallint(4) default NULL COMMENT '商品的显示顺序',
  `add_time` datetime default NULL COMMENT '商品的添加时间',
  `comment_switch` tinyint(1) default NULL COMMENT '允许评论(评论开关)',
  `click_count` mediumint(9) default NULL COMMENT '点击计数',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for goods_class

-- ----------------------------

CREATE TABLE `goods_class` (
  `id` smallint(6) NOT NULL,
  `name` varchar(60) collate utf8_unicode_ci default NULL COMMENT '分类名称',
  `parent_id` smallint(6) default NULL COMMENT '该分类的父id,取值于该表的id字段,0为一级分类',
  `keywords` varchar(60) collate utf8_unicode_ci default NULL COMMENT '分类的关键字, 可能是为了搜索',
  `desc` varchar(255) collate utf8_unicode_ci default NULL COMMENT '分类描述',
  `style` varchar(255) collate utf8_unicode_ci default NULL COMMENT '该分类的单独的样式表的包括文件名部分的文件路径',
  `template` varchar(255) collate utf8_unicode_ci default NULL COMMENT '单独模板文件的 无或0为默认',
  `show_in_nav` tinyint(1) default NULL COMMENT '是否显示在导航栏, 0=不; 1=显示  可多加几个用于控制',
  `is_show` tinyint(1) default NULL COMMENT '是否在前台页面显示; 1=显示; 0=不显示',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for goods_gallery

-- ----------------------------

CREATE TABLE `goods_gallery` (
  `id` int(11) NOT NULL auto_increment,
  `goods_id` mediumint(9) NOT NULL COMMENT '商品相册自增id',
  `thumb_url` varchar(255) collate utf8_unicode_ci default NULL COMMENT '微缩图片url',
  `url` varchar(255) collate utf8_unicode_ci default NULL COMMENT '大图片url',
  `desc` varchar(255) collate utf8_unicode_ci default NULL COMMENT '图片说明信息',
  `sort` tinyint(6) default NULL COMMENT '产品相册图片排序',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for links

-- ----------------------------

CREATE TABLE `links` (
  `id` smallint(4) NOT NULL auto_increment,
  `name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT '网站名称',
  `url` varchar(255) collate utf8_unicode_ci default NULL COMMENT '地址',
  `note` varchar(255) collate utf8_unicode_ci NOT NULL COMMENT '说明',
  `logo` varchar(255) collate utf8_unicode_ci default NULL COMMENT 'logo地址',
  `sort` tinyint(4) NOT NULL COMMENT '显示顺序 最大255',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for news

-- ----------------------------

CREATE TABLE `news` (
  `id` smallint(6) NOT NULL auto_increment,
  `title` varchar(255) collate utf8_unicode_ci default NULL COMMENT '标题',
  `url_name` varchar(60) collate utf8_unicode_ci default NULL COMMENT '可定义url名称',
  `title_style` varchar(60) collate utf8_unicode_ci default NULL COMMENT '标题样式',
  `news_class` tinyint(4) default NULL COMMENT '分类ID',
  `time_add` datetime default NULL COMMENT '发布时间',
  `link_out` varchar(255) collate utf8_unicode_ci default NULL,
  `desc` text collate utf8_unicode_ci COMMENT '内容',
  `appendix` varchar(255) collate utf8_unicode_ci default NULL COMMENT '附件',
  `keywords` varchar(255) collate utf8_unicode_ci default NULL COMMENT 'tag',
  `top_rank_1` tinyint(4) default NULL COMMENT '置顶级别',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Table structure for news_class

-- ----------------------------

CREATE TABLE `news_class` (
  `id` smallint(6) NOT NULL auto_increment,
  `name` varchar(60) collate utf8_unicode_ci NOT NULL COMMENT '分类名称',
  `keywords` varchar(60) collate utf8_unicode_ci default NULL COMMENT '分类的关键字',
  `desc` varchar(255) collate utf8_unicode_ci default NULL COMMENT '分类描述',
  `sort` tinyint(4) default NULL COMMENT '该分类在页面显示的顺序',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



-- ----------------------------

-- Records

-- ----------------------------
 楼主| 发表于 2009-7-31 17:18:34 | 显示全部楼层
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_unicode_ci";

也试过
发表于 2009-7-31 17:32:41 | 显示全部楼层
用 utf8_general_ci 建数据库表试试,如果都一致不应该出错吧,我这里没发现此类问题。
 楼主| 发表于 2009-7-31 22:30:43 | 显示全部楼层
用 utf8_general_ci 重新建了一次 还是不行!
发表于 2009-7-31 22:38:31 | 显示全部楼层
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");

这几个也可以用在 CI 中,只不过用 CI 的方法写查询就可以了,你可以试试。
 楼主| 发表于 2009-7-31 22:47:55 | 显示全部楼层
现在解决了,不过还是有隐患

$db['default']['char_set'] = "";
$db['default']['dbcollat'] = "";

改成这样了,

隐患是 用phpmyadmin 查看是乱码!

本版积分规则