仓酷云

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

[学习教程] PHP网页设计恣意字符集下正常显示网页

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:57:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
培训的第一阶段,学习的是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:14 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
变相怪杰 该用户已被删除
板凳
发表于 2015-2-6 20:54:31 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
若天明 该用户已被删除
地板
发表于 2015-2-20 00:59:25 | 只看该作者
实践是检验自己会不会的真理。
透明 该用户已被删除
5#
发表于 2015-2-27 07:47:31 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-3-2 04:19:44 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
山那边是海 该用户已被删除
7#
发表于 2015-3-7 11:58:35 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
若相依 该用户已被删除
8#
发表于 2015-3-9 14:34:40 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
9#
发表于 2015-3-10 21:28:08 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
冷月葬花魂 该用户已被删除
10#
 楼主| 发表于 2015-3-11 08:25:29 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-13 01:09:29 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
小女巫 该用户已被删除
12#
发表于 2015-3-17 10:47:59 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
蒙在股里 该用户已被删除
13#
发表于 2015-3-24 07:40:52 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
因胸联盟 该用户已被删除
14#
发表于 2015-3-25 14:28:19 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-1 08:10:47 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
爱飞 该用户已被删除
16#
发表于 2015-4-26 08:10:46 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
活着的死人 该用户已被删除
17#
发表于 2015-4-29 04:24:37 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
金色的骷髅 该用户已被删除
18#
发表于 2015-4-30 10:51:50 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
简单生活 该用户已被删除
19#
发表于 2015-5-12 05:54:18 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 06:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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