- 浏览: 1547300 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
小谈MySQL字符集
作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
<!---->
首先,这片文章纯粹是我的个人经验之谈,适用于我常见的环境及项目中.
个人建议,数据库字符集尽量使用utf8(HTML页面对应的是utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上可能无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.
接下来是完整的一个例子:
1.创建数据库表
mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
#注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8校验集来排序
#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了
mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;
#这句话就是创建一个表了,制定默认字符集为utf8
2.写数据
例子1是通过php直接插入数据:
a.php
<!---->
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
//其他编程语言/接口也类似,例如 .net/c#/odbc
//jdbc则设置连接字符串为类似"jdbc:mysql://localhost/db?user=user&password=123456&useUnicode=true&characterEncoding=UTF-8"
mysql_query("set names utf8;");
//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mb_convert_encoding("insert into my_table values('测试');", "utf-8", "gb2312");
?>
例子是通过页面提交插入数据2:
b.php
<!---->
//输出本页编码为utf-8
header("content-type:text/html; charset=utf-8");
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
mysql_query("set names utf8;");
if(isset($_REQUEST['name'))
{
//由于上面已经指定本页字符集为utf-8了,因此无需转换编码
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}
$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
自此,使用utf8字符集的完整的例子结束了.
如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
附1:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
第二步:转换编码(类似unix/linux环境下)
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或者可以去掉 -f 参数,让iconv自动判断原来的字符集
iconv -t utf-8 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,在插入/更新语句开始之前,增加一条sql语句:
"SET NAMES utf8;"
,保存。
mysql -hlocalhost -uroot my_db < new.sql
大功告成!!
附2:支持查看utf8字符集的MySQL客户端有
1.) MySQL-Front,据说这个项目已经被MySQL AB勒令停止了,不知为何,如果国内还有不少破解版可以下载(不代表我推荐使用破解版 :-P)。
2.) Navicat,另一款非常不错的MySQL客户端,汉化版刚出来,还邀请我试用过,总的来说还是不错的,不过也需要付费。
3.) PhpMyAdmin,开源的php项目,非常好。
4.) Linux下的终端工具(Linux terminal),把终端的字符集设置为utf8,连接到MySQL之后,执行 SET NAMES UTF8; 也能读写utf8数据了。
附3:本站提供转换文件内容字符集工具(CCT),可以支持最大2Mb的文件字符集转换,欢迎使用。
<!---->
<meta content="mysql 字符集,MySQL字符集,MySQL 乱码,mysql字符集设置,MySQL utf8,MySQL utf-8,MySQL charset,mysql 默认字符集,mysql 字符集和整理,mysql 中文 字符集,mysql中文问题" name="keywords">
<meta content="mysql 字符集,MySQL字符集,MySQL 乱码,mysql字符集设置,MySQL utf8,MySQL utf-8,MySQL charset,mysql 默认字符集,mysql 字符集和整理,mysql 中文 字符集,mysql中文问题" name="description">
评论
实属好文章!转码函
实属好文章!
转码函数有笔误,对初学者可能会走弯路,希望叶兄修正:
mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312");
应为:
mb_convert_encoding("insert into my_table values('测试');", "utf-8", "gb2312");
也许我没说明白我备
也许我没说明白
我备份只是mysql下wordpress目录和apache目录下相关的目录!
而不是直接备份的数据库??
能说清每个步骤吗????
你好。原来mysql5.0.21
你好。
原来mysql5.0.21 wordpress 用的是原默认latin1
直接拷备的/mysql/var/wordpress/* 和 htdocs/wordpress
现在是mysql5.0.41,新数据库设置默认都 为utf8
把它俩再拷回到相应目录下。再设置worpress数据库的用户和密码
而现在的worpress数据库是原来的latin1
用浏览器上wordpress 全是乱码
请问:如何,改成utf8??
你可以把 在 phpmyadmin
你可以把 在 phpmyadmin 里 把数据先 导出,然后,改 .sql 里的 CHARSET=latin1
改成 CHARSET=utf8
然后在 导入 到你要放的 数据库 里,就可以了
希望你成功!!
如有问题可以和我联系!!
QQ:36380150
MSN:guopeng623@hotmail.com
按照上面所说的,先
也许我没说明白我备
也许我没说明白
我备份只是mysql下wordpress目录和apache目录下相关的目录!
而不是直接备份的数据库??
能说清每个步骤吗????
按上述设置后 CREATE
按上述设置后
CREATE DATABASE `中文`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
后,在data目录下的文件夹名是乱码.
windowsxp系统,mysql5,请问大家有没有遇到这个情况?如何解决?
谢谢! :-)
mysql
mysql 5.x中,系统文件夹(数据库文件夹)的字符集都是utf8的,因此如果你的操作系统不支持utf8的话,显示起来就似乎是'乱码',但是并不影响你正常使用。
另外,强烈建议采用英文来命名,否则很容易产生兼容性问题,将来麻烦的很。
欢迎来到MySQL中文网: http://imysql.cn
给你的祝福,要让你招架不住!
谢谢,我看到5.1里有
谢谢,我看到5.1里有一个设置set filesystem charset 默认是 binary 但是我改了以后反而不能用了,不知道这个是不是可以更改存盘的charset?
还有就是字段名称使用汉字是否功能键全?
谢谢!
欢迎来到MySQL中文网: http://imysql.cn
给你的祝福,要让你招架不住!
系统全局变量character_s
系统全局变量character_set_filesystem
跟你的文件系统相关,最好是不要改动它.另外,还是那句话,除非迫不得已,一定不要采用中文命名数据库/表/字段等.
欢迎来到MySQL中文网: http://imysql.cn
给你的祝福,要让你招架不住!
谢谢,今天把所有中
谢谢,今天把所有中文字段都改成英文啦,呵呵,挺无奈的,等mysql升级吧。
有些特殊的词用英语不容易表达,有些遗憾。 :-)
呵呵,可以用英文单
呵呵,可以用英文单词的第一个字母组合啊,很简单的哦
欢迎来到MySQL中文网: http://imysql.cn
欢迎加入Google MySQL中文用户群:http://groups.google.com/group/imysql
给你的祝福,要让你招架不住!
我用的是mysql5.0.24,
我用的是mysql5.0.24,设定为utf8,使用WP很正常,但用phpmyadmin和命令行操作mysql的是候显示的中文还是乱码~~为什么会这样的呢??
我在使用varchar(
我在使用varchar(非binary)时,"coco"和"球球"编码(gb)重合了,请问可否在不改变字段和编码的情况下,区分开这两个词?
你试着改改一下数
哪里看不懂?欢迎
那我想咨询一下,
那我想咨询一下,如果是类似于like的单字符搜索结果会准确吗?例如:like '%徐%',请帮忙测试一下,我用的版本是5.0.19,谢谢!
如果是非英文字符
如果是非英文字符的,最好加binary修饰符,例如:
select x from xx where binary xx like '%徐%';
但仍旧可能会把不包含'徐'字的内容给检索出来,比较好的办法就是用utf-8字符集来存储,并且指定是utf-8校验字符集。
欢迎来到MySQL中文网: http://imysql.cn
给你的祝福,要让你招架不住!
您的这句: select x from
您的这句:
select x from xx where binary xx like '%徐%';
中,binary XX应该是字段名吧?
再问:如果表或字段都没有在定义时指定 binary ,是否可以这样用呢?
------------------------------
任凭岁月悠悠,我心依然风流.
这个就更不会出问
我的是RH9
我的是RH9 数据库是MYSQL5,用的是RPM安装。默认的字符是latin1.手动插入中文,用JSP读取后出现乱码。这是怎么回事?
mysql的默认数据库放在/var/lib下,我能不能将新建的数据放到其它地方?
另外:
在windows下mysql为什么用GBK字符,JSP才能正常读取中文?用UTF8怎么会出乱码?
这几个问题一直困扰我好几天,一直没想明白。还请指点。在此不胜感激!
我的邮箱:pmy54@163.com
谢谢·
表的默认字符集是
表的默认字符集是latin1也不能保证你在用JDBC连接数据库时就定不会出现乱码。
记住JAVA是unicode编码的。所以在连接数据库的url中一定要指定编码类型。
发表评论
-
(转)SQLデータ型
2011-08-24 18:09 2158https://www.microfocus. ... -
(转)Determining equivalent SQL and COBOL data types
2011-08-24 18:01 1487http://publib.boulder.ibm ... -
(转)grep Programs and Regular expressions
2011-08-10 13:10 1224http://ss64.com/bash/grep-r ... -
(转)find:根据指定条件查找文件
2011-08-10 11:34 1034http://man.ddvip.com/ ... -
(转)[红旗] 手动可以执行,加入crontab 就不行了
2011-07-05 13:07 1812http://bbs.chinaunix.net ... -
(转)Linux——计划任务管理
2011-07-04 15:02 1577http://hi.baidu.com/%BA%CE%B4 ... -
(转)CentOS的计划任务,Crontab安装及使用方法
2011-07-04 15:01 3107http://www.hitsword.org/re ... -
(转)Windows如何压缩tar.gz格式
2011-05-11 10:34 1275http://www.viosem.com/2008/ ... -
(转)日语的文字编码
2011-03-02 10:23 1656http://blog.csdn.net/jackyren ... -
(转)《软件工程的事实与谬论》
2010-11-04 09:57 1694http://book.group.iteye.com ... -
(转)VB6迁移到VB.NET的一些问题汇总
2010-11-03 15:02 1818http://www.cnblogs.com/ols/ar ... -
(转)《张冰Java视频教程》(struts Hibernate spring jsp J2SE)长期更新
2010-07-14 20:51 0http://www.verycd.com/topics/ ... -
(转)使用httpclient4登录百度
2010-02-26 14:45 0http://legend30g-4/article/h ... -
(转)如何一次性从Outlook Express中导出邮件
2010-01-06 13:23 5678http://hi.baidu.com/grape17/b ... -
Top Ten TPC-E by Performance
2009-10-21 14:50 1048http://www.tpc.org/tpc ... -
IBM DB2 UDB 和 SQL Server 2000
2009-10-21 14:49 1362http://www.microsoft.com/chin ... -
TCP/IP環境のPCからメインフレームを使用する
2009-10-16 11:51 0http://cap-l.sakushin-u.ac.jp:8 ... -
JP1名词解释
2009-10-10 15:17 3621http://soft.yesky.com/0/30685 ... -
Java 内存溢出的可能性汇总
2009-02-18 13:42 15751 分配的内存太小, 请使用 JVM 参数设置更大的可用内存 ... -
Java web应用内存溢出 [已结帖,结帖人:pengble]
2009-02-18 13:40 2280加为好友发送私信在线聊天
相关推荐
MySQL版本5.5.17在默认情况下可能使用不同的字符集,比如拉丁1(latin1),而Eclipse或JDBC可能使用的是UTF-8或者其他支持中文的字符集。 解决乱码问题的关键在于确保所有环节的字符集一致。以下是具体的调整步骤:...
MySQL在处理表情符号时面临的主要问题是其默认的UTF-8编码(实际上是UTF-8变种,也称为utf8,只支持三字节的Unicode字符)无法完全覆盖Unicode字符集,尤其是那些包含表情符号的四字节UTF-8字符。当你尝试在MySQL中...
此外,构造函数还设置了数据库字符集为UTF-8,确保数据存取时中文字符不会出现乱码。 接着,文档描述了`tbField`方法,该方法用于获取指定表的所有字段名称。通过执行MySQL的DESCRIBE语句并遍历结果集,将每个字段...
此外,该构造函数还设置了字符集为`utf8`,并初始化了一些操作选项,如字段选择、条件、排序和分组。 `tbField()`方法用于获取指定表的所有字段名。它执行`DESC` SQL语句来获取表的描述,然后遍历结果,将每个字段...
此外,值得注意的是,由于MySQL的表可能采用UTF-8编码,而Excel可能默认使用GBK编码,为了避免导出的Excel文件打开时出现乱码,需要在`INTO OUTFILE`语句中指定字符集为GBK。这确保了数据导出后能正确显示。 补充一...
首先,`mysql_query()` 的主要功能是接收一个SQL查询字符串作为参数,然后尝试在连接的MySQL数据库上执行该查询。如果查询成功,函数将返回一个结果集资源,用于后续的数据处理,如获取查询结果行。这个资源可以被`...
MySQL自定义函数是数据库系统中一个非常实用的功能,允许用户根据特定需求编写自己的函数,以扩展MySQL的标准功能集。在上述描述中,我们看到如何创建一个简单的MySQL自定义函数,名为`onlineFunction`,用于根据...
更改字符集的地方有两个:一是MySQL配置文件(通常为`my.cnf`或`my.ini`),二是创建数据库时指定的字符集。在配置文件中找到`default-character-set=latin1`这一行,将其改为`default-character-set=gb2312`。改完...
2. 字符编码:不同的字符集可能会有不同的字节占用,如UTF8每个字符3字节,UTF8MB4每个字符4字节。 3. 是否允许`NULL`:`NULL`字段会占用额外的1字节来标记是否为空。 4. 内部存储开销:可能存在额外的字节用于内存...
- 连接参数:如主机名(host)、用户名(user)、密码(password)、数据库名(db)和字符集(charset)。 - 执行SQL语句:`cursor.execute(sql, params)`,其中params是一个元组,用于参数化查询。 - 获取结果:`...
值得一提的是,MySQLi扩展支持更广泛的字符集编码转换,这在处理国际化数据时非常有用。另外,MySQLi也支持更复杂的查询,例如连接查询(JOIN)和子查询。 在具体应用中,MySQLi对事务的处理也是其一大亮点。MySQLi...
- 查询数据库使用`mysql_query`,处理结果集使用`mysql_store_result`或`mysql_use_result`。 - 完成操作后,记得使用`mysql_close`关闭连接。 3. 数据库操作步骤: - 查询:使用SQL的`SELECT`语句,如`SELECT *...
- 如果需要支持 emoji,则需要设置 `charset=utf8mb4` 并确保创建数据库时的字符集设置正确。 - 支持的 schemes 包括 SQLite、MySQL、PostgreSQL 及其扩展和连接池版本。 ##### 4.2 其他高级特性 - **事务管理**...
由于提供的【部分内容】中大部分内容均为乱码,无法从中提取出有意义的IT知识点,但是根据标题“浅谈使用***和***访问SQL Server数据库.pdf”和【描述】中的重复标题,我们可以推断出本文档的主要内容。以下将围绕**...
2. **设置字符集**:接着,转到“终端” -> “仿真” -> “VT特性”标签页,在“字符集”部分,选择“GB2312”。这是因为GB2312是中国大陆常用的一种汉字编码标准,可以较好地处理中文字符。不过,如果你的服务器...
2.3.4 声明并初始化字符串 2.3.5 操作字符串 2.3.6 创建和使用常量 2.3.7 创建并使用枚举 2.3.8 类型转换 2.4 编写表达式 2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if 语句的使用方法 ...
10. **外部数据源表**:支持通过多种方式连接外部数据源,如其他PostgreSQL数据库、文件系统、MySQL、Oracle、Sybase、ODBC接口、Redis、CouchDB等,并能对这些外部数据源执行JOIN操作以及收集统计信息,虽然目前...