仓酷云
标题:
PHP网页设计恣意字符集下正常显示网页
[打印本页]
作者:
冷月葬花魂
时间:
2015-2-3 23:57
标题:
PHP网页设计恣意字符集下正常显示网页
培训的第一阶段,学习的是HTML/CSS/JavaScript基础。 凡是情形下,咱们的网页要指定一个编码字符集,如 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进制的0xFEFF)时,请把它疏忽失落,由于这个是Unicode编码中的传输掌握字符,而咱们如今的字符串已只要iso-8859-1编码中的前128个字符了,所以咱们不需求它了。
好了,根基思绪就是如许,上面是完成的法式:
<P class=hl-firstline>
<LI class=hl-firstline><?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是需求停止转化的字符串。前往了局是转化今后字符串。
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。
作者:
老尸
时间:
2015-2-4 07:20
兴趣是最好的老师,百度是最好的词典。
作者:
变相怪杰
时间:
2015-2-6 20:54
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
若天明
时间:
2015-2-20 00:59
实践是检验自己会不会的真理。
作者:
透明
时间:
2015-2-27 07:47
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者:
灵魂腐蚀
时间:
2015-3-2 04:19
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者:
山那边是海
时间:
2015-3-7 11:58
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者:
若相依
时间:
2015-3-9 14:34
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者:
仓酷云
时间:
2015-3-10 21:28
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者:
冷月葬花魂
时间:
2015-3-11 08:25
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者:
飘飘悠悠
时间:
2015-3-13 01:09
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者:
小女巫
时间:
2015-3-17 10:47
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者:
蒙在股里
时间:
2015-3-24 07:40
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者:
因胸联盟
时间:
2015-3-25 14:28
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者:
愤怒的大鸟
时间:
2015-4-1 08:10
本文当是我的笔记啦,遇到的问题随时填充
作者:
爱飞
时间:
2015-4-26 08:10
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者:
活着的死人
时间:
2015-4-29 04:24
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年 具体的记不清啦,囧。
作者:
金色的骷髅
时间:
2015-4-30 10:51
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者:
简单生活
时间:
2015-5-12 05:54
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2