仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1056|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之PHP完成恣意字符集下正常显示网页的办法...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:53:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可以在书上很方便地做标记,及时记下自己的心得体会。   凡是情形下,咱们的网页要指定一个编码字符集,如 GB2312、UTF-8、ISO-8859-1 等,如许咱们就能够在网页上显示咱们指定编码的文字了。然而咱们极可能会碰到这类情形,那就是咱们能够但愿在 ISO-8859-1 编码的网页上显示汉字,或在 GB2312 编码的网页上显示韩文等。固然一种处理举措就是咱们不必 ISO-8859-1 或 GB2312 编码,而一切都采取 UTF-8 编码,如许咱们只需在这类编码下,就能够夹杂显示列国文字了,这是如今良多网站采取的办法。
而我这里所说的并不是下面这类办法,由于下面这类办法必需要指定字符集为 UTF-8 才可以,一旦用户手工指定为其他字符集,或能够由于某些缘由,谁人字符集设置没起感化,而阅读器又没有准确主动辨认的话,咱们看到的网页仍是乱码,特别是在某些用框架作的网页中,某个框架中的页面假如字符集设置没起感化,在 firefox 中显示乱码并且还没法改动(我是说在不装RightEncode插件的情形下)。
而我这里引见的办法即便是把网页指定为 ISO-8859-1 字符集,也可以准确显示汉字、日文等。道理很复杂,就是把除 ISO-8859-1 编码中前128个字符之外的一切其他的编码都用 NCR(Numeric character reference) 来暗示。好比“汉字”这两个字,假如咱们写成“汉字”这类模式,那末它在恣意字符集下都可以准确显示。依据这个道理,我写了上面这个法式,它可以把现有的网页转化为在恣意字符集下都能显示的网页。你只需求指定源网页的字符集和源网页,点提交按钮,就能够失掉方针网页了。你也能够只转化某些文字,只需求把文字填写到文本框中,并指定这些文字本来的字符集,点提交按钮,就会在页面下面显示编码后的文字了。别的我还编写了WordPress 的插件,如今我的 Blog 已可以在恣意字符集下都能准确显示了。
完成办法:
起首第一步是要把源字符集的字符串转化为UTF-16字符集,做这一步是由于UTF-16字符集中的每一个字符都是两个字节,前面处置起来很轻易,而假如在源字符集上直接做处置则很庞杂。源字符集可以从原网页中的meta标签中取得,也能够独自指定,我的法式是让用户在表单中指定源字符集,由于我不克不及包管用户提交的文件就必定是HTML文件(其他文件也是可以的,好比这个WordPress的汉化包源文件是个po文件,它外面的内容也能够如许处置),并且即便是HTML文件,外面也纷歧定就有效于指定字符集的meta标签,所以经由过程表单独自指定字符集对照保险。你能够会感觉将一种字符集转化为另外一种字符集很庞杂,的确如斯,假如本人来完成的话,的确十分费事,然而用PHP来做却很轻易,由于它外面已包括如许的函数了,你可以经由过程iconv函数很轻易的来完成各类字符集之间的转化,假如你的机械上没有装置iconv扩大,你也能够利用mb_convert_encoding函数,假如Multibyte String扩大也没有装置,那就没举措了,由于你要本人完成那末多种编码的转化根基上是不成能的,除非你是顶级大牛!保举利用iconv,由于这个效力高,撑持的字符集也更多。
做完下面那一步以后,接上去是以每两个字节为单元对字符串停止处置。这两个字节直接转化为数字就是&#xxxxx;中的xxxxx,假如这个数字小于128就直接利用这个字符(注重这里就酿成单字节了),不然就利用&#xxxxx;的模式。这里有一点要注重,就是当这个数字是65279(16进制的0x FEFF)时,请把它疏忽失落,由于这个是Unicode编码中的传输掌握字符,而咱们如今的字符串已只要iso-8859-1编码中的前128个字符了,所以咱们不需求它了。
好了,根基思绪就是如许,上面是完成的法式:
以下为援用的内容:
<?php
function nochaoscode($encode, $str) {
$str = iconv($encode, "UTF-16BE", $str);
for ($i = 0; $i < strlen($str); $i++,$i++) {
$code = ord($str{$i}) * 256 + ord($str{$i + 1});
if ($code < 128) {
$output .= chr($code);
} else if ($code != 65279) {
$output .= "&#".$code.";";
}
}
return $output;
}
?>

函数的参数中,$encode是源字符集,$str是需求停止转化的字符串。前往了局是转化今后字符串。

虽说不上很好,但至少一般的数据操作,再在原有的SQL语言的基础上,用得还是可以的。
爱飞 该用户已被删除
沙发
发表于 2015-2-4 06:54:02 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
蒙在股里 该用户已被删除
板凳
 楼主| 发表于 2015-2-6 15:05:14 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
谁可相欹 该用户已被删除
地板
发表于 2015-2-16 18:33:35 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
若天明 该用户已被删除
5#
发表于 2015-2-24 06:01:34 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
再现理想 该用户已被删除
6#
发表于 2015-2-25 00:49:00 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
不帅 该用户已被删除
7#
发表于 2015-3-2 01:28:47 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
只想知道 该用户已被删除
8#
发表于 2015-3-4 07:02:50 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
变相怪杰 该用户已被删除
9#
发表于 2015-3-6 04:12:43 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
简单生活 该用户已被删除
10#
发表于 2015-3-8 01:54:03 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
兰色精灵 该用户已被删除
11#
发表于 2015-3-11 02:04:37 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
乐观 该用户已被删除
12#
发表于 2015-3-12 10:24:38 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
海妖 该用户已被删除
13#
发表于 2015-3-14 09:05:17 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
第二个灵魂 该用户已被删除
14#
发表于 2015-3-17 04:31:22 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
愤怒的大鸟 该用户已被删除
15#
发表于 2015-3-22 22:10:21 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
冷月葬花魂 该用户已被删除
16#
发表于 2015-3-27 23:08:18 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
老尸 该用户已被删除
17#
发表于 2015-4-1 05:58:27 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
小女巫 该用户已被删除
18#
发表于 2015-4-1 10:23:11 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
小魔女 该用户已被删除
19#
发表于 2015-4-12 04:23:58 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
因胸联盟 该用户已被删除
20#
发表于 2015-4-22 05:36:27 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 08:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表