原文发布时间为:2010-08-31 —— 来源于本人的百度文章 [由搬家工具导入]

wap开发全程记忆[CLQ原创 持续更新]

1. 据说手机wap最好都是utf-8字符集,不过gb2312对移动手机是没有问题的,主要指的是联通手机.--不过我想,考虑到国际化,确实应该用 utf-8 字符集.

2. 改为 utf-8 后 WinWAP 居然显示不出来! 害我折腾一个下午,还以为格式不对!

3. 每个
回复列表 发表:clq 时间:2007-04-28 03:42:07.0
这是来自的转贴 http://www.cnblogs.com/onlytiancai/archive/2007/02/08/645098.html

--------------------------------------------------

WAP学习小总结


1、如果m3gate显示不认识的mime类型,要强制输出wml,否则自动输出的是html。在web.config的system.web小节加上以下配置
发表:clq 时间:2007-04-28 03:46:50.0
来自 http://www.designer5.net/article/article_show.asp?id=66 的转贴,比较实用.
--------------------------------------------------

用php作wap开发时遇到的问题
发表:2004-10-27 点击: 1059次 作者:偶然 转自:myblog.boei.cn
以前作过几个月的wap开发,本文我将简要的介绍一下我在作wap开发时遇到的一些问题,供大家借鉴.

更新说明:在类里出现的数字13是错误的,现在已经改成11了。数学没有学好,连手机号的长度都没有数清楚,这回人可丢大了。

1.文件格式
首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查 更详细的资料,我这里只是略微的提到.在我看来wml类似于xml,有非常严格的格式,在作wap页面时,都得用wml来作为显示.

wml的语法非常简单,在用php作动态输出时,一定要发送一个头信息,标明本页面是wml,而不是别的什么*ml.

header("Content-type: text/vnd.wap.wml; charset=\"gb2312\"");

这里用的字符集是gb2312,在移动的平台上是没有任何问题的,但在联通的平台上就不行了,一定得用utf-8,为了更通用,还是用utf-8更安全.即

header("Content-type: text/vnd.wap.wml; charset=\"utf-8\"");


2.编码

上面说了字符集都应采用utf-8,这是一种容纳了多国语言的字符集,一个汉字是占双字节,utf-8占了4个字节,因此其容纳的信息量更大.在手机上编 写的汉字,在将页面内码转成utf-8后,以后再打开就可能是一堆乱码.因此大家在作注释时,尽可能的用英文注释,省得以后看不懂.像 editplus,ultraedit等工具都可以转文件内码.

3.适配

世界各大手机厂商真是有病,开发出的手机千奇百怪,可以支持的格式也是五花八门.比如铃声,有的可以支持,16,32,48和弦,支持mid,wmv,有 的不完全支持;有的支持gif,png,bmp,有的也不完全支持.这虽然是把手机的档次和成本拉开了,但却苦了作手机开发的兄弟们了.因为不可避免的要 对手机所能支持的图片,铃声等多媒体信息作出一个匹配,这个匹配的处理,我们一般叫做手机适配.
要作手机适配,我们一般得有如下资料.

1)一份详细的手机适配资料表,里面应详细的说明手机所能支持的铃声,图片格式,还得有手机型号等信息
2)要正确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息.

有了上面的东东我们才能做出适配.以下给出一个我写的在wap开发中用到的类,可以用来取手机号,手机UA.



/**
* 类名: mobile
* 描述: 手机信息类
* 其他: 偶然 编写
*/
class mobile
{
/**
* 函数名称: getPhoneNumber
* 函数功能: 取手机号
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getPhoneNumber()
{
if (isset($_SERVER['HTTP_X_NETWORK_INFO']))
{
$str1 = $_SERVER['HTTP_X_NETWORK_INFO'];
$getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i','\2',$str1);
Return $getstr1;
}
elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID']))
{
$getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];
Return $getstr2;
}
elseif (isset($_SERVER['HTTP_X_UP_SUBNO']))
{
$str3 = $_SERVER['HTTP_X_UP_SUBNO'];
$getstr3 = preg_replace('/(.*)(11[d])(.*)/i','\2',$str3);
Return $getstr3;
}
elseif (isset($_SERVER['DEVICEID']))
{
Return $_SERVER['DEVICEID'];
}
else
{
Return false;
}
}

/**
* 函数名称: getHttpHeader
* 函数功能: 取头信息
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getHttpHeader()
{
$str = '';
foreach ($_SERVER as $key=>$val)
{
$gstr = str_replace("&","&",$val);
$str.= "$key -> ".$gstr."\r\n";
}
Return $str;
}

/**
* 函数名称: getUA
* 函数功能: 取UA
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getUA()
{
if (isset($_SERVER['HTTP_USER_AGENT']))
{
Return $_SERVER['HTTP_USER_AGENT'];
}
else
{
Return false;
}
}

/**
* 函数名称: getPhoneType
* 函数功能: 取得手机类型
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function getPhoneType()
{
$ua = $this->getUA();
if($ua!=false)
{
$str = explode(' ',$ua);
Return $str[0];
}
else
{
Return false;
}
}

/**
* 函数名称: isOpera
* 函数功能: 判断是否是opera
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function isOpera()
{
$uainfo = $this->getUA();
if (preg_match('/.*Opera.*/i',$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 函数名称: isM3gate
* 函数功能: 判断是否是m3gate
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function isM3gate()
{
$uainfo = $this->getUA();
if (preg_match('/M3Gate/i',$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 函数名称: getHttpAccept
* 函数功能: 取得HA
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function getHttpAccept()
{
if (isset($_SERVER['HTTP_ACCEPT']))
{
Return $_SERVER['HTTP_ACCEPT'];
}
else
{
Return false;
}
}

/**
* 函数名称: getIP
* 函数功能: 取得手机IP
* 输入参数: none
* 函数返回值: 成功返回string
* 其它说明: 说明
*/
function getIP()
{
$ip=getenv('REMOTE_ADDR');
$ip_ = getenv('HTTP_X_FORWARDED_FOR');
if (($ip_ != "") && ($ip_ != "unknown"))
{
$ip=$ip_;
}
return $ip;
}
}
?>



4.页面设计

作wap开发时,wap页面是非常简单的.比html来说是简单到不能再简单了.在wap1.0里是没有表格之类的乱七八糟的东西的.所有的标签都是写在一个叫card的标签之内.可以用来分段.所以做页面的算是轻松了.

5.模拟器

作wap开发免不了要用各式各样的模拟器来测试,比较好的有m3gate,openwave,opera,还有一个叫winwap的,大家最好别用他来作 测试,他的兼容性太好了,即使页面有错误都能给忽略掉.测试时跟用浏览器测试web页面一样,输入网址就可以了.没有比这更容易的事了.

6.注意事项

1)空格,特别是在定义DTD时,

echo "";


里面如果哪个地方少个空格,就有你受的了.以前写的时候用了页面重排之后,把一些空格给干掉了,整整找了两天才找出错误来,大家千万别步我的后尘.

2)标签,如果标签不成对,会提示错误,大家注意就是了,很容易修正. 发表:clq 时间:2007-04-28 16:27:20.0
http://club.joyes.com/Announce/Announce.asp?BoardID=875&ID=9143404


四、关于下载限制问题解决办法
本机出厂由于设置了持续联接的联机型态,导致下载文件最大为350K,要突破此限制,进WAP设置,选编辑设置档,再进CHINA MOBILE,再选编辑设置档,把联机型态改为HTTP,确认后激活设置档,一切搞定! 发表:clq 时间:2007-04-28 19:56:00.0
你先通过本机发送GPRS到1861,开通GPRS。(如果你要选15元包100M的,请发送GPRS15到1861)


"...2006年6月18日起,1860、1861合号为10086,号码升位,服务升级。..."


http://www.sc.chinamobile.com/folder6/10086/index.htm

8、我以前使用你们的短信方式进行话费查询、业务办理都是发送到01860或01861,那么热线改号以后,这种操作方式会不会变呢?

答:此次热线改号暂时只针对服务热线。 发表:我是马甲 时间:2007-05-24 16:15:15.0
// memo = str_replace(memo, "-", "­");//奇怪 opera 不认这个

文档说 - 号要用 ­ 表示.但 opera 不认?

而且不转换的话,其实手机也是能认出 - 号的. 发表:我是马甲 时间:2007-06-13 11:38:03.0
深圳 wap 功能的收费[其实也不贵]

昨天用wap后来收到短信今日用了 84K 收费 2元.吓了一跳,这么贵呀! 赶紧找来资费说明,原来是神州行默认为 2元/天 .

不过注意是有流量限制的,为 3M .浏览小说还是可以的. 超过流量为 3元/M. 如果您的流量超过这个数,不如办 15元 包月流量好了.就是100M/月 即 3.3M/天(XX的移动的人是 Z 呀,其实没优惠多少嘛!反而还要天天交.还是用我默认的好了.)算下来流量大是没什么套餐能解决的.天天用的话才是包月好.


--------------------------------------------------
http://szx.sz.gd.chinamobile.com/business/business_1.aspx

资费标准
1、GPRS日费套餐:从2006年5月15日起神州行GPRS升级为基本功能,可以实现手机上网,收发彩信等,此功能无需申请即可使用,无需月租,不使用不收费。使用此功能收费如下: 日功能费标准 GPRS业务内容
2元/日
含当天(00:00-24:00)3M CMWAP GPRS流量(扣除彩信业务产生的流量),超出部分按3元/M收费,不足1M按1M收取
--------------------------------------------------

不过不管怎么样,比传说中的 0.03元/K (即 30元/M 左右) 总是要便宜多了. 发表:我是马甲 时间:2007-06-13 11:46:24.0
实际上 0.03元/K 计费的是全球通的 CMNET 接入方式. 神州行的是只能用 CMWAP 的. (我的手机好象没有区分这两种网络的功能,用神州行刚好合适了.省得不小心接入 CMNET). 发表:我是马甲 时间:2007-06-13 11:48:01.0
深圳移动的总入口地址
[url]
http://sz.gd.chinamobile.com/SXT/Default.aspx 发表:clq 时间:2007-09-26 14:32:39.0
传说中的手机屏幕宽度,如果你要做个 wap 图片站...

101x80
112x112
120x160
128x113
128x128
128x146
128x160
128x190
128x70
128x96
128x97
132x176
144x176
162x180
176x133
176x144
176x180
176x220
208x254
240x320
96x65

wap开发杂项1的更多相关文章

  1. wap开发使用jquery mobile之后页面不加载外部css样式文件/js文件

    场景: wap开发,使用jquery mobile之后不会加载外部自定义的css文件了,需要手动刷新才会加载,查看外部自定义的js文件也是一样. 解决办法: 1.在page下面添加css样式,就不要写 ...

  2. wap开发中的cookie

    安卓和ios的wap开发,安卓中的cookie可以识别中文,但是ios不能识别,需要转码成通用码(UNICODE),解决办法:直接转成16进制码, escape('测试文字') 友情链接:http:/ ...

  3. wap开发体会<转载>

    前二天因工作需要,上头要求做一个wap版的网站,到网上学习了一天,弄了个beta版出来(http://wap.luckty.com 功能很一般),整理几点经验如下: 1.wap网站用的是wml标识,非 ...

  4. wap开发笔记之幻灯片

    最近在进行wap站研究,发现网上成熟的wap幻灯片都很难找到,在此贴出一个iphone的幻灯效果,希望对wap站开发的人有些帮助. 点此下载

  5. 微信wap开发,页面显示元素不全-微信开发(asp.net)

    最近在开发的微信的微商城,出现这样一种情况: pc上浏览正常,但是一到手机上浏览就会缺少部分元素 解决办法: 找了很多原因,还通过uc浏览器把网页到存下来了,发现并没有缺少元素,只是没有显示出来,后来 ...

  6. wap开发之滑动事件(swipe、tap、swipeleft、swiperight)等

    最近一直找在wap端可以实现的swipe等滑动事件的方法,开始研究了jquery-mobile,zepto,结果由于jqm太大.zepto有不少缺陷.为此研究了zepto,想把里面的swipe事件独立 ...

  7. ios开发杂项(基础性介绍等)

    IOS Xcode开发中的文件后缀名区别m,mm,cpp,h .h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C ...

  8. app wap开发mobile隐藏地址栏的js

    function scrolltol (){ setTimeout ( function () { , ) }, ); } window . onload = function () { if ( d ...

  9. 微信wap开发---页面自适应大小

    <meta name="viewport" content="width=device-width, initial-scale=0.5, minimum-scal ...

随机推荐

  1. ZR#317.【18 提高 2】A(计算几何 二分)

    题意 Sol 非常好的一道题,幸亏这场比赛我没打,不然我估计要死在这个题上qwq 到不是说有多难,关键是细节太多了,我和wcz口胡了一下我的思路,然后他写了一晚上没调出来qwq 解法挺套路的,先提出一 ...

  2. 二十、Mysql 连接的使用

    Mysql 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据. 本章节我们将向大家介绍如何使用 MySQL 的 JOIN ...

  3. DC84问

    1.1 什么是DC?DC(Design Compiler)是Synopsys公司的logical synthesis工具,它根据design description和design constraint ...

  4. 【python学习】新手基础程序练习(二)

    Ι 继续上一节得内容,这里主要是对各种知识的理解以及如何运用. 一.执行 Python 脚本的两种方式 1.把python执行文件加到计算机的环境变量中,然后新建文件把程序写在新文件里,再通过cmd命 ...

  5. Django runserver支持https

    创建自签名ssl证书 1.下载软件openssl-0.9.8k_WIN32 2.解压后进入bin目录,双击打开openssl.exe,依次运行如下命令 genrsa -des3 -out server ...

  6. PSTR、LPSTR等宏原型

    1.首先介绍char.wchar_t ,宽字符wchar_t和窄字符char. 窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定.char字符只能表示ASII码表中的256个字符, ...

  7. B1051 复数乘法(15 分)

    [PAT]B1051 复数乘法(15 分) - 路明天 - 博客园 https://www.cnblogs.com/hebust/p/9496809.html 在此对四舍五入输出结果做总结. 对于do ...

  8. Diycode开源项目 Glide图片加载分析

    1.使用Glide前的准备 1.1.首先要build.gradle中添加   github原地址点击我. 参考博客:Glide-开始! 参考博客:android图片加载库Glide的使用介绍. 参考博 ...

  9. xcode6没有prefix.pch预编译文件解决办法

    注意到Xcode6创建的工程没有prefix.pch. 于是手动创建. 在other下选择pch文件 接着到工程的build setting下设置开启预编译并配置路径(文件的路径.因为我新建在cofi ...

  10. IOS开发学习笔记020-练习总结

    自己做了一遍,现在再复习一下,总结一下. 最终效果如下         1.新建一个工程Single View Application 总体如下 不过要关闭自动布局功能 这是按下设置按钮显示的界面默认 ...