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