关于mysql错误1366(不能识别汉字问题)
来源:互联网 发布:linux bash脚本 编辑:程序博客网 时间:2024/04/29 17:44
网上大部分决绝方法都说要设置my.ini,但是在我的安装目录里面没有这个文件,于是自己闯创建的了一个文件,但是问题依然没有解决。
最后是看了一篇文章
用status查看状态。
发现
Client characterset: utf8
Conn. characterset: utf8
用命令set names 'gbk'。
再用status看一下,就改成gbk了。虽然更改成功,问题仍未解决
后记:但是最后使用时依然会出现乱码的问题,看样子必须按照大部分资料所说的要更改my.ini的设置,但是苦于找不到文件,最后看到解决方法,说是要把比如mylarge.ini文件更改为my.ini,最后测试依然不行,因为在里面找不到default-character-set的设置选项。
最后实在是无奈,于是重装了软件,因为忘记备份,原来的数据库都找不到了,最后只能重新编写数据库,偶然发现原来我的my.ini文件居然存放在了program data 文件中,里面却是也有default-character-set选项,更改为gbk后,终于不再出现乱码。问题解决看来my.ini的配置作用却是强大
通过解决这个问题找到了不少有用的指令,借着这篇文章记一下。
1、查看 MySQL 数据库服务器和数据库字符集
show variables like '%char%';
2、查看当前安装的 MySQL 所支持的字符集。
show charset;
3、设置编码:
修改my.cnf
vi /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
保存,重启mysql即可;
修改数据库的字符集
mysql>use mydb
mysql>alter database mydb character set utf-8(utf8);
创建数据库指定数据库的字符集
mysql>create database mydb character set utf-8(utf8);
或者用mysql命令修改编码
通过MySQL命令行修改:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
set collation_connection=utf8;
set collation_database=utf8;
set collation_server=utf8;
mysql修改表、字段字符集
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
查看数据库编码:
SHOW CREATE DATABASE db_name;
查看表编码:
SHOW CREATE TABLE tbl_name;
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
MySQL中的字符集转换过程
1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
• 使用每个数据字段的CHARACTER SET设定值;
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。
3. 将操作结果从内部操作字符集转换为character_set_results。
其他注意事项
• my.cnf中的default_character_set设置只影响mysql命令连接服务器时的连接字符集,不会对使用libmysqlclient库的应用程序产生任何作用!
• 对字段进行的SQL函数操作通常都是以内部操作字符集进行的,不受连接字符集设置的影响。
摘自:http://www.3lian.com/edu/2013/05-23/71223.html
- 关于mysql错误1366(不能识别汉字问题)
- 关于linux虚拟机不能识别USB问题
- 关于讯飞语音不能识别问题
- 关于mysql中汉字的乱码问题
- mysql不能存汉字
- 关于mysql不能安装问题
- 关于mac系统上 mysql重置密码(解决密码错误不能登录Sequel Pro的问题)
- Android网络请求时关于汉字不能解析的问题
- mysql 不能插入汉字问题 设置编码方式
- Mysql 5.5版本不能存储汉字的问题
- 安装MySQL,以及解决不能写汉字问题
- 关于mysql 1146错误问题
- python汉字识别方面问题
- 关于不能识别4GB内存条的问题!
- 关于web.xml中不能识别taglib的问题
- 【转】关于web.xml中不能识别taglib的问题
- 关于web.xml中不能识别taglib的问题
- 关于web.xml中不能识别taglib的问题
- cocos2dx-2.2搭建android环境
- Altium Designer winter 09中关于Silkscreen over component pads的错误提示的解决方法
- rails render alert i18n
- 长条文字flash+xml自动变换广告代码,可以加链接
- CentOS 6.4 安装中文输入法
- 关于mysql错误1366(不能识别汉字问题)
- 三维透视变换
- cxf生成客户端代码
- 【转载】关于如何实现 DataTable合并【结构相同或相异】
- linux C语言使用syslog接口
- 基于JQuery的span元素点击事件在windows7触摸上失效的解决方法
- 永中二次开发--文档转图片
- MPICH C语言接口函数说明
- 用Objective-C 实现的Rc4算法加密