使用php使用中文编程,UTF8下的中文PHP编程_PHP教程

本文介绍了在UTF8编码下PHP进行数据库编程的相关知识,包括如何处理MySQL 4.1及以上版本的字符集问题,数据库升级和降级时的数据处理策略,以及涉及的SQL指令。内容涵盖设置字符集、防止乱码、数据迁移等方面,旨在帮助开发者更好地理解和应对多语言环境下的数据库操作。
摘要由CSDN通过智能技术生成

前言:

说实话,

凉鞋也觉得 UTF8 是好东西……

毕竟同屏显示中日韩对东亚人的吸引力是不小的……

(当然好处不仅是这点啦……)

不仅是网页程式……

很多应用程式的内核都开始使用 Unicode 编码……

目的是显而易见的:支援多语言显示……

微软的所有软体都是 Unicode 内核……

所以日文软体拿到你的中文 XP 上是可以正常显示的……

而中文 98 就会因为 GB 内核安装其他语言软体时造成乱码……

至于 UTF8 ,

可以说是 Unicode 的一个分支,

它用三个字节保存一个汉字……

(Unicode 用四个字节)

应用软体都集体投奔 Unicode 了……

就不允许我们搞网页程式的用 UTF8?

本文中凉鞋就尽量多方位介绍一下 UTF8 编码下的 php(做为现在的主流开发语言) 编程……

至于为什么单独介绍“中文”……

一来是因为英文这玩意实在不需要考虑 UTF8 ……

除非你准备做多语言系统……

(我要发些牢骚:现在的老外写程式时根本不重视这个问题……)

二来是中日韩等多字节语系在 UTF8 编码下的处理方式其实大同小异……

依葫芦画瓢即可……

好……先从数据库处理部分开始吧……

==========================================

连接数据库

很多人刚升级到 MySQL(和PHP搭配之最佳组合) 4.1 时会发现数据乱掉了……

其实是因为 MySQL(和PHP搭配之最佳组合) 从 4.1 开始支援字符集了……

而且默认字符集正是 UTF8 ……

(充分证明与国际接轨的重要性…… 嘿嘿……)

而以前我们大多使用 utf8 或是 GBK 编码……

这样以来输出的数据当然是乱码……

要解决乱码……

就得让程序知道该获取什么编码的数据……

我们假设你以前的数据库是 utf8 编码的……

那么你可以在查询前添加一句

MySQL(和PHP搭配之最佳组合)_query(SET CHARACTER SET utf8) or die("Query failed : " . MySQL(和PHP搭配之最佳组合)_error());

当然,由于 4.1 以上才需要这样处理,

因此我们可以加上判断:

$MySQL(和PHP搭配之最佳组合)version = $db->query_first("SELECT VERSION() AS version");

if ($MySQL(和PHP搭配之最佳组合)version[version] >= 4.1)

{

MySQL(和PHP搭配之最佳组合)_query(SET CHARACTER SET utf8) or die("Query failed : " . MySQL(和PHP搭配之最佳组合)_error());

}

这样以来不管 MySQL(和PHP搭配之最佳组合) 默认编码是什么都可以正常存取了……

(不论您是存活期,还是存定期,甚至是零存整取都没有问题鸟……)

但是,人家都国际化鸟……

您还在用 utf8 行么?

如何转码呢?

还有……

数据升级时出现乱码怎么办?

凉拌!

且听下回分解……

============================================

数据升级至 4.1

要升级……

就得先导出……

要说老外还真不负责……

以前的导出方式总是弄丢一些中文字符……

比如把“我爱你娘”弄成“我爱你”啦……

(通常是丢失一段数据最末尾的字)

整个儿差了一辈儿……

(用石榴姐的话说就是“这么大逆不道的事实在是太刺激了”……)

为了保护您脆弱的心脏……

也为了维护中国传统伦理道义……

您可以把数据包含中文字符的字段改为二进制(Binary)编码……

具体方法嘛……

可以运行这个语句:

ALTER TABLE `表名` CONVERT TO CHARACTER SET binary;

这样,那些字符类型字段,如:

CHAR、VARCHAR 和 TEXT

将转换为

BINARY、VARBINARY 和 BLOB

然后再导出并导入到 4.1 环境中……

当然,最后一项繁琐的工作是:

你需要把它们的类型再改回来……

有往 4.1 升级的……

当然也有往下降级的……

怎么降级???

凉鞋去上个厕所……

而您请翻下页……

=============================================

数据从 4.1 降级

有人发现从4.1导出的 SQL 文件无法导入低版本程序……

问题其实很简单……

而且 MySQL(和PHP搭配之最佳组合) 已经为我们想好了一切……

导出时请添加 –compatible 参数……

我们假设您的数据库是 utf8 编码的……

而且目标数据库版本为 4.0 ……

那么命令行下这么写:

shell>MySQL(和PHP搭配之最佳组合)dump --user=username --password=password --compatible=MySQL(和PHP搭配之最佳组合)40 --default-character-set=utf8 database > db.sql

这样导出的 SQL 文件就能够顺利导入低版本数据库了……

http://www.bkjia.com/PHPjc/508616.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508616.htmlTechArticle前言: 说实话, 凉鞋也觉得 UTF8 是好东西…… 毕竟同屏显示中日韩对东亚人的吸引力是不小的…… (当然好处不仅是这点啦……) 不仅...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值