MYSQL读取中文正常插入乱码(?)的解决和在DOS下insert,select中文的方法

MYSQL5.0~
怎么插入中文都显示问号~
而在Navicat中改成中文再读取出来又正常~
最后进DOS下查询MYSQL~
发现中文也都是?~
记得以前正常的时候是可以在DOS下insert,select中文的~
于是搜索了一下得到了答案~
然当DOS下可以insert,select中文的时候~
网页的读取插入也正常了~

方法如下:
先输密码进数据库
命令行输入
mysql> show variables like ‘character\_set\_%’;

显示表格数据如下
character_set_client   utf8
character_set_connection utf8
character_set_database   utf8
character_set_results    utf8
character_set_server   utf8
character_set_system     utf8

输入以下2条命令改动
mysql> set character_set_results=gbk;
mysql> set character_set_client=gbk;

再查看一次
mysql> show variables like ‘character\_set\_%’;

如果已经如下显示 那么就已经完成了
character_set_client   gbk
character_set_connection utf8
character_set_database   utf8
character_set_results    gbk
character_set_server   utf8
character_set_system     utf8

可以输入以下命令建立数据库测试insert,select是否为中文
mysql>create database test;
mysql>use test;
mysql>create table test ( id int(11) not null auto_increment primary key,name varchar(100) not Null,age int(10) not null ) type=MyISAM,default character set utf8;
         >insert into test(name,age) values(’本职工作’,19);
       >insert into test(name,age) values(’张工作’,22);
         >insert into test(name,age) values(’王作’,29);
mysql>select * from test;

MySQL 数据库乱码问题解决办法

如果你遇到乱码问题,可以从下面几个问题逐步检查:

(1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码。

解决办法:将页面存储编码和 meta 声明保持一致。用记事本打开文件,“另存为”,下面有个选项是“编码”,选择和 meta 声明一致的编码方式。(提示:meta 的编码声明要放在 title 标签前面,否则容易导致页面空白。)

(2)检查你的数据库连接有没有设置连接方式(SET NAMES),Mysql4.1 版本以后,如果你没有设置数据库连接方式,那么插入或者查询将出现乱码情况。

解决办法:在你的数据库连接后面(通常是在Mysql_conneCT后面,执行任何查询之前)加上一句 :

Code:
Mysql_query(”SET NAMES utf8″);

其中 utf8 需要根据你需要设置。

(3)检查你的页面编码、meta 声明、数据库连 接方式(SET NAMES)是否一致,如果你的页面和meta设置为gb2312,但是却在程序中设置 SET NAMES utf8,同样会导致乱码。原因是如果页面设置为 gb2312 ,那么表单中的数据也是按照 gb2312 提交,但是程序却要求按照 utf8 去处理,结果自然是乱码。

解决办法:将页面编码、meta 声明、数据库连接方式(SET NAMES)保持一致,当然这里说的一致不是绝对的,如Mysql的 utf8 和页面中的 utf-8 是不一样的,具体要根据你的实际情况设置。

前段时间帮客户将 phpbb 2 迁移到 Discuz! 5,客户要求论坛数据不能有太大损失,本来已经找到了一个转换程序,可以将原有数据迁移到新的数据表中,结果转换后发现页面上全是乱码。仔细研究发现:phpbb安装是按照默认的字符编码 latin1 ,而  Discuz! 用的是 gbk ,也就是标题说的“不同字符集数据表转换出现乱码”。

解决方法是转换数据编码方式:

第一步:将数据导出成期望的字符编码:
Code:
Mysqldump -u用户名 -p密码 –default-character-set=原字符集 –set-charset=期望字符集 –skip-opt数据库名 > 导出的文件名.sql

在上文提到的例子中,用下面的命令:
Code:
Mysqldump -uroot -p*** –default-character-set=latin1 –set-charset=gbk –skip-opt phpbb> phpbb_gbk.sql

第二步:建立一个期望字符集的临时数据库
Code:
CREATE DATABASE `phpbb_gbk` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

注意:这个是上文提到的例子中所用的命令,具体到实际应用时,要根据需要设置。

第三步:将第一步备份的数据导入到这个新创建的临时数据库里面:
Code:
Mysql-u用户名 -p密码 –default-character-set=期望字符集 -f数据库名<第一步备份的文件名.sql

在我的例子中是用下面的命令:
Code:
Mysql-uroot -p*** –default-character-set=gbk -f phpbb_gbk<phpbb_gbk.sql

然后就可以在这两个数据库之间执行转换程序了。

c:\windows\temp\重要性

c:\windows\temp\重要性
c:\windows\temp\与服务器的稳定之间有非常大的关系。
大家优化什么的,都不要乱来.
1有人说我把c:\windows\temp里的文件全删了!
2 有人说 ,看到C:\WINDOWS\Temp目录下有8个G将近 这些都是.dat和.tmp的,有用吗这些东西?怎么减小占的空间啊

结果,这样那样的出错.
zend 出错,mysql出错, 附件传不了, 优化出如此结果,何必.

C:/windows/Temp,是系统临时文件夹,里面的文件时系统运行时产生的临时文件 但是不代表,可以随便删除.

另转一,大家看.
C:\windows\Temp权限对数据库的影响
连接Access错误..N久没有用Access了….就算把数据库给IIS用户完全的权限也不行,最后发现是Temp权限设置的问题.解决如下:
对 C:\WINDOWS 目录给 users用户加上读取权限(千万不要给完全权限,有读的权限就行了),加上权限后,如果数据库连接正确就OK了
如果问题还没有解决,请查看:C:\WINDOWS\Temp 目录权限,给users 用户加上特别的权限,其它权限都可以去掉。
方法如下:
选择temp目录–右键–属性–安全–添加–高级–立即查找–选择Users用户–确定
返回到安全选项,选择Users用户 — 高级 — 选择Users“编辑” — 选择如下权限,其它权限全部取消
遍历文件夹/运行文件
创建文件/写入数据
创建文件夹/附加数据

解决MYSQL出现Can’t create/write to file ‘C:\WINDOWS\TEMP\#sql_5c0_0.MYD’ (E
2007-11-07 18:23
在my.ini中[mysqld]里面添加一行
tmpdir=”d:/mysql/temp/”
指定创建创建临时文件的目录,大量查询时会用到
重新启动mysql服务使之生效.
打开McAfee VirusScan控制台->按访问扫描程序->属性->所有进程->检测项->排除项->添加D:\mysql\temp\
排除时间选择读取时写入时.

备注:由于mysql默认的临时目录是c:\windows\temp,网上流传的说法是
修改McAfee VirusScan控制台->按访问扫描程序->属性->所有进程->检测项->扫描文件去年写入文件时,
我的方法相对要安全些.
至于权限,由于mysql服务默认是系统权限,一般都是系统完全控制的,如果必要,也可给个启动用户

←Older