实在搞不定了,MYSQL 5.6 一个数据库中文乱码

yhgfriend 2014-08-14 05:18:53
MYSQL5.6 中的一个数据库中文怎么搞都是乱码
环境 win7 64位操作系统
安装方式 xampp
MYSQL 5.6版本
--------------------------
我用mysql workbench图形界面,在里面写入中文,刷新后也是显示为问号。
请看下图的最右边一列所示的问号

本人数据库菜鸟,网上试了各种方法,均不能搞定。高手帮忙QQ远程设置一下
...全文
6837 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42027416 2018-05-20
  • 打赏
  • 举报
回复
之前我装的wamp,然后MySQL数据录入中文一直显示问号,把wamp卸载,再重新安装MySQL,配置,然后好了!!
ACMAIN_CHM 2014-08-14
  • 打赏
  • 举报
回复
引用
字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。以下描述可能显得复杂,但是在实际应用中可以发现使用多种级别会使结果自然而明显。 10.3.1. 服务器字符集和校对 MySQL服务器有一个服务器字符集和一个服务器校对规则,它们均不能设置为空。 MySQL按照如下方法确定服务器字符集和服务器校对规则: · 当服务器启动时根据有效的选项设置 · 根据运行时的设定值 在服务器级别,确定方法很简单。当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。可以使用--default-character-set设置字符集,并且可以在字符集后面为 校对规则添加--default-collation。如果没有指定一个字符集,那就与--default-character-set=latin1相同。如果你仅指定了一个字符集(例如,latin1),但是没有指定一个 校对规则,那就与--default-charset=latin1 --default-collation=latin1_swedish_ci相同,因为latin1_swedish_ci是latin1的默认校对规则。因此,以下三个命令有相同的效果: shell> mysqld shell> mysqld --default-character-set=latin1 shell> mysqld --default-character-set=latin1 \ --default-collation=latin1_swedish_ci 更改设定值的一个方法是通过重新编译。如果希望在从源程序构建时更改默认服务器字符集和校对规则,使用:--with-charset和--with-collation作为configure的参量。例如: shell> ./configure --with-charset=latin1 或者: shell> ./configure --with-charset=latin1 \ --with-collation=latin1_german1_ci mysqld和configure都验证字符集/校对规则组合是否有效。如果无效,每个程序都显示一个错误信息,然后终止。 当前的服务器字符集和校对规则可以用作character_set_server和collation_server系统变量的值。在运行时能够改变这些变量的值。 10.3.2. 数据库字符集和校对 每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则: CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name] ALTER DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name] 例如: CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; MySQL这样选择数据库字符集和数据库校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用服务器字符集和服务器校对规则。 MySQL的CREATE DATABASE ... DEFAULT CHARACTER SET ...语法与标准SQL的CREATE SCHEMA ... CHARACTER SET ...语法类似。因此,可以在同一个MySQL服务器上创建使用不同字符集和 校对规则的数据库。 如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使用数据库字符集和校对规则作为默认值。它们没有其它目的。 默认数据库的字符集和校对规则可以用作character_set_database和 collation_database系统变量。无论何时默认数据库更改了,服务器都设置这两个变量的值。如果没有 默认数据库,这两个变量与相应的服务器级别的变量(character_set_server和collation_server)具有相同的值。 10.3.3. 表字符集和校对 每一个表有一个表字符集和一个校对规则,它不能为空。为指定表字符集和校对规则,CREATE TABLE 和ALTER TABLE语句有一个可选的子句: CREATE TABLE tbl_name (column_list) [DEFAULT CHARACTER SET charset_name [COLLATE collation_name]] ALTER TABLE tbl_name [DEFAULT CHARACTER SET charset_name] [COLLATE collation_name] 例如: CREATE TABLE t1 ( ... ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci; MySQL按照下面的方式选择表字符集和 校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用服务器字符集和服务器校对规则。 如果在列定义中没有指定列字符集和校对规则,则默认使用表字符集和校对规则。表字符集和校对规则是MySQL的扩展;在标准SQL中没有。 10.3.4. 列字符集和校对 每一个“字符”列(即,CHAR、VARCHAR或TEXT类型的列)有一个列字符集和一个列 校对规则,它不能为空。列定义语法有一个可选子句来指定列字符集和校对规则: col_name {CHAR | VARCHAR | TEXT} (col_length) [CHARACTER SET charset_name [COLLATE collation_name]] 例如: CREATE TABLE Table1 ( column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci ); MySQL按照下面的方式选择列字符集和校对规则: · 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 · 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。 · 否则,采用表字符集和服务器校对规则。 CHARACTER SET和COLLATE子句是标准的SQL。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx MySQL 中文显示乱码
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
我估计可能原因是数据库与表的 default character set = gbk ,但是字段的字符集却被单独设置成了其它的字符集(MYSQL 好像允许设置字段的字符集),所以以前无论我怎么改变数据库与表的字符集都没有,因为字段的字符集没有得到相应的改变。
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
重大发现
在phpmyadmin下修改字段的 排序规则 由 latin1_swedish_ci 改为 gbk_chinese_ci就能正常存储中文了
benluobo 2014-08-14
  • 打赏
  • 举报
回复
在你的数据库配置文件my.ini或者my.cnf下的server部分加入 character_set_server=utf8 重启mysql , 需要重新建立表
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
引用 5 楼 benluobobo 的回复:
show create table '表名'
show create table '表名' 与 show create database '数据库名' 结果是最后显示 default character set gbk
ACMAIN_CHM 2014-08-14
  • 打赏
  • 举报
回复
在你的 phpadmin 环境下使用 show variables like 'character%' 进行检查,楼主不能在CMD中检查了然后说明PHPADMIN中有错误啊。 按下贴中的方法检查字符集设置。并贴出以供分析。 http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx MySQL 中文显示乱码
benluobo 2014-08-14
  • 打赏
  • 举报
回复
show create table '表名'
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
在phpMyAdmin工具下,有个提示,我改写该单元格,如果输入是英文和数字则有效,如果我改写成中文比如下图右下角所示的“中国"二个字则马上显示了一个警告:
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复


引用 2 楼 benluobobo 的回复:
show variables like 'character%'

执行一下
benluobo 2014-08-14
  • 打赏
  • 举报
回复
show variables like 'character%' 执行一下
yhgfriend 2014-08-14
  • 打赏
  • 举报
回复
如有热心朋友愿意远程帮我设置一下请加我QQ 97oo135, 感激不尽!~~

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧