url 特殊字符 传递参数化解措施

   
1遍坑爹的小bug。读取1段文字(编码utf-八),想替换掉空格,str_replace(”
“..)、preg_replace(“/\s/”..)都不起效用。

  1. 空格 U凯雷德L中的空格能够用+号可能编码 %20
  2. / 分隔目录和子目录 %二F
  3. ? 分隔实际的 U奥迪Q5L 和参数 %3F
  4. % 钦命特别字符 %25
  5. # 表示书签 %二三
  6. & U奇骏L 中内定的参数间的相间符 %二陆
  7. = U锐界L 中钦命参数的值 %3D

python基础知识总括

图片 1

python有段时日没用了,实在是惭愧啊,土憋昨天决定初阶对python基础知识重新开展总计,以慰自心。

一.python概念

  1. Python是深入人心的“龟叔”吉多 van
    罗斯尔um在一九八陆年圣诞节中间,为了打发无聊的圣诞节而编辑的一个编制程序语言。

  2. python定位“优雅”,“简单”,“明确”

二.python安装

三.python基础

一.输入输出

输入输出input/output,简称I/O

输出:

print语句也足以跟上几个字符串,用逗号“,”隔离,就足以连成1串输出,逗号在print语句里面看做空格,print能够出口整数和开始展览演算输出结果

输入:

raw_input:输入值并存放到变量里面

变量相信不要求多说了

2.数据类型

整数:

Python能够管理放四大小的平头,当然包罗负整数,在程序中的表示方法和数学上的写法1模同样,举个例子:1100-80800,等等。

微型Computer由于采用2进制,所以,有时候用十陆进制表示整数相比较便宜,十六进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。

浮点数:

浮点数也等于小数,之所以称之为浮点数,是因为依据科学记数法表示时,一个浮点数的小数点地方是可变的,比方,1.二3x十9和12.3×108是非常的。浮点数能够用数学写法,如1.233.14-9.01,等等。但是对于相当的大或相当小的浮点数,就务须用科学计数法表示,把十用e代替,一.二3×109就是1.23e9,或者12.3e8,0.00001二方可写成1.2e-5,等等。

平头和浮点数在管理器内部存款和储蓄的方法是例外的,整数运算长久是精确的(除法难道也是精确的?是的!),而浮点数运算则恐怕会有四舍5入的标称误差。

字符串:

字符串是以”或””括起来的私下文本,举个例子'abc'"xyz"等等。请留心,”或””本身只是壹种象征方法,不是字符串的一片段,因而,字符串'abc'只有abc这3个字符。如果'自身也是一个字符,那就足以用””括起来,例如"I'm OK"涵盖的字符是I'm,空格,OK这6个字符。

只要字符串内部既包涵’又含有”怎么办?能够用转义字符\来标记,举个例子:转义字符\能够转义繁多字符,举个例子\n表示换行,\t表示制表符,字符\自身也要转义,所以\\意味着的字符正是\

一旦字符串里面有诸多字符都需求转义,就需求加大多\,为了简化,Python还同意用r”表示”内部的字符串暗中认可不转义

设若字符串内部有繁多换行,用\n写在一行里不佳阅读,为了简化,Python允许用”’…”’的格式表示多行内容。

布尔值:

布尔值和布尔代数的象征1致。布尔值只有True大概False两种值,python能够用True
或 False表示布尔值,注意分寸写,也能够通过布尔运算,举例:

>>> True

True

>>> False

False

>>> 3 > 2

True

>>> 3 > 5

False

布尔值能够用and or not
来运算,and是与运算,都以True才会是True,or是或运算,有3个True就为True,not是单目运算符,表示非运算True变False,False变True。

布尔值一般用在基准决断中

空值:

空值是Python里三个古怪的值,用None表示。None无法驾驭为0,因为0是有意义的,而None是叁个新鲜的空值。

python还有列表,元组,字典,还有自定义数据类型,后边壹一整理道来

变量:

大大小小写英文字母,数字,_下划线且不能够以数字开端,能够代表种种数据类型

动态语言:变量本人类型不固定的名字为动态语言,反之就是静态语言,如java,评释时必须钦定项目

a=’aaa’

代表在内部存款和储蓄器中成立aaa字符串,在内部存款和储蓄器中开创a变量,并将a变量指向aaa

a=b

代表将a变量指向b变量的值

常量:

无法变的变量,举例PI,python中并未有编制表示常量不可能变,一般习于旧贯用大写字母来表示常量

三.字符串和编码

字符串是一种数据类型,字符串有二个主题材料正是编码难点,Computer只能处理数字,要管理公事,必须将文件用数字来表示,那样就有了编码,而Computer是由奥地利人表达的,英文能够用二个字节表示,最早只有1贰几个字符被编码到计算机,那几个编码表称为ASCII码,但管理粤语3个字节不够,至少供给多个字节,而且还不可能和ASCII码争执,所以,中中原人民共和国制定了GB231贰码

普天之下语言那么多,各国有各国的正规,不可幸免的会有争持,unicode就像此发生了,unicode平日是四个字节,卓殊偏僻的字才用越多字节,ASCII码前面补0正是unicode码了

用unicode码也不正常,纵然联合用unicode编码乱码难点消除了,但是占用空间大了,那样就有了可变长编码utf-八

utf-八将二个unicode字符依照分裂数字大小编码成一-陆个字节,常用的英文字母编码为2个字节,汉字经常四个字节,很面生的字符才会编码成4-5个字节,假设用于大气英文,utf-捌能够节约不计其数空间。UTF-八还一个好处就是ASCII码实际能够当做utf-八的1有的,多量支撑ASCII码的野史遗留软件可以在utf-八编码下再而三工作。

搞精通了ASCII、Unicode和UTF-捌的涉嫌,我们就足以总计一下现行反革命Computer种类通用的字符编码工作方法:

在管理器内部存款和储蓄器中,统一使用Unicode编码,当需求保留到硬盘可能须要传输的时候,就改造为UTF-八编码。

用记事本编辑的时候,从文件读取的UTF-8字符被撤换为Unicode字符到内部存款和储蓄器里,编辑完毕后,保存的时候再把Unicode调换为UTF-八保存到文件

浏览网页的时候,服务器会把动态变化的Unicode内容转换为UTF-八再传输到浏览器,所以您看到众多网页的源码上会有类似<meta
charset=”UTF-八” />的音讯,表示该网页就是用的UTF-八编码。

4.python字符串

python诞生比unicode早,所以最早的python只援助ASCII码,字母和数字对应,python提供了ord()和chr()函数将字母和呼应的数字兑换,python后来加多了对unicode帮衬,unicode字符串表示u’…’,’…’能够用作utf-捌编码只怕ASCII编码,不过u’…’只可以作为unicode编码,英文表示的unicode编码和utf-8编码同样,但是占用的上空分裂,而中文字符转变后七个unicode字符将改成四个utf-8字符,len()函数重回字符串长度,将utf-8字符转变为unicode字符,用decode(‘utf-八’),python源码也是2个文书文件,一般保存为utf-8,#coding
utf-8

5.格式化

最广大的是出口格式化的字符串,python的格式化和c语言壹致,%s用字符串替换,%d用整数替换,若是只有2个%?,括号能够大约,

常见的占位符:

%s 字符串

%d整数

%f 浮点数

%x 十陆进制整数

纪事:格式化整数和浮点数能够钦点是还是不是补0和整数和小数的位数

>>>'%2d-%02d'%(3,1)'3-01'>>>'%.2f'%3.1415926'3.14'

要是您不鲜明用什么,%s能够将其他数据类型转换为字符串

>>>'Age:%s.Gender:%s'%(25,True)'Age:25.Gender:True'

对于unicode字符,用法完全一致,但最佳保险替换的字符串也是unicode字符串

>>>u'Hi,%s'%u'Michael'u'Hi,Michael'

要是字符串的%也是三个平凡字符,那就供给转义,%%表示%

待续。。。

python有段时间没用了,实在是惭愧啊,土冒后天决定初阶对python基础知识重新开始展览总计,以慰自心。
一.python概念 Pytho…

本章目录

  • Part One:字符编码
  • Part Two:字符串
  • Part Three:字符串格式化

字符串能够说是享有形成语言中选拔最常见的数据类型,Python也不例外。而拍卖字符串,首先需求留意的便是编码难题。

  不可能,将替换不了的空格ord()下才看出,那么些utf-八空格比较独特。ASCII
1玖四 + 160出来的。

   例如:< language=”java”>write(‘<a
href=”;

字符编码

微机的真面目实际上正是由0和1结合的,所以说不管中文依然英文字符串,最后都要改换为数字。
最早唯有1二四个字符被编码到Computer里,也便是高低写英文字母、数字和壹部分标记,那么些编码表被喻为ASCII编码。
可是要拍卖汉语显明2个字节是不够的,至少必要多个字节,而且还无法和ASCII编码冲突,所以,中中原人民共和国制订了GB2312编码,用来把中文编进去。
新生呢,为了管理更加多的言语,Unicode应运而生。Unicode把持有语言都合并到1套编码里,这样就不会再有乱码难题了。
Python二.x雨后春笋正是用的ASCII编码,而Python三.x就从头利用unicode了,那样粤语展现难点就有了相当大的改进。那里打字与印刷了眨眼间间windows下Python三.陆的各样编码:

图片 2

Python编码.png

能够看看,基本统壹为了utf-8。那么怎么着是utf-八呢?utf-八其实是二个可变长编码。它把三个Unicode字符依照区别的数字大作者码成一-四个字节,常用的英文字母被编码成3个字节,汉字平常是三个字节,唯有很生分的字符才会被编码成4-多少个字节。假使您要传输的文本包涵大批量英文字符,用UTF-八编码就能省去空间:

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

从下面的表格还能发现,UTF-8编码有2个附加的补益,便是ASCII编码实际上能够被用作是UTF-8编码的1部分,所以,大量只协助ASCII编码的历史遗留软件能够在UTF-八编码下持续做事。
在Computer内部存款和储蓄器中,统壹采纳Unicode编码,当须要保留到硬盘也许需求传输的时候,就调换为UTF-八编码。
用记事本编辑的时候,从文件读取的UTF-八字符被撤换为Unicode字符到内部存款和储蓄器里,编辑实现后,保存的时候再把Unicode转变为UTF-八保存到文件:

图片 3

image.png

<?php

// 替换<p>后4个空格
$str = file_get_contents("http://m.ts.cn/new/99cms_ts/api.php?s=/News/getNewsInfoTmp/Nid/51089");
$str = str_replace(" ", "-", $str);
$str = preg_replace("/\s/", "-", $str);
echo $str;  // 不起作用

在应用url举行参数字传送递时,平常会传递一些国语名(或包括特殊字符)的参数或U翼虎L地址,在后台管理时会暴发调换错误。在稍微传递页面使用GB231二,而在吸收页面使用UTF八,那样接收到的参数就只怕会与原来产生不均等。使用劳务器端的urlEncode函数编码的U科雷傲L,与使用客户端java的encodeU揽胜极光I函数编码的URubiconL,结果就分歧。

字符串格式化

  1. 字符串格式化便是在钦赐地点先放一个占位符,然后用变量来替换,那样就能够以同等的格式输出分化的剧情。
    最轻易易行的案举个例子下图所示:
![](https://upload-images.jianshu.io/upload_images/6879662-35e9e9fc9e8b349f.png)

字符串格式化.png



其中,占位符常用的有:
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

再有不少别样占位符,不太常用,供给的时候再去查就好了。
此外,假使不分明,能够利用字符串占位符,因为任何项目都转载为字符串。

  1. 英雄说法是%号的方法已经过时了,用format方法来操作字符串格式化更适于。
    作为二个刚入门的学人,未有力量去分别那两者的好坏,相对来讲,个人恐怕喜欢format情势多一些,感到更标准。
    format格局的基础用法正是用{0},{1}…来替代站位符,若是用{}代表行使私下认可顺序,比如:
![](https://upload-images.jianshu.io/upload_images/6879662-9ba20d5a74127547.png)

format格式化.png



另外,还有一些比较详细的用法:



![](https://upload-images.jianshu.io/upload_images/6879662-a9310b98109d7212.png)

format格式化进阶.png
<?php

// utf-8无bom文件下,四个空格
$s1 = chr(194) . chr(160);
$s2 = chr(32);
$s3 = " ";
$s4 = " ";  // 全角空格
$s = $s1 . $s2 . $s3 . $s4;

// 判断
$r  = '';
if ($s1 == $s2) $r .= 1;
if ($s1 == $s3) $r .= 2;
if ($s1 == $s4) $r .= 3;
if ($s2 == $s3) $r .= 4;
if ($s2 == $s4) $r .= 5;
if ($s3 == $s4) $r .= 6;

// 结果
echo $s, "#####", $r, "####", str_replace(" ", "-", $s), "####", preg_replace("/\s/", "-", $s);

4、 
escape对0-255以外的unicode值实行编码时输出%u****格式,其余景况下escape,encodeU哈弗I,encodeU帕JeroIComponent编码结果同样。

字符串

字符串就是用单引号(‘)也许双引号(“”)包裹起来的文字,在Python风格标准里引入2个模块使用1种标记作为字符串表示。在字符串内得以选用其它一种引号,
防止止在字符串中使用。
例如:

print('Why are you hiding your eyes?')
print("I'm scared of lint errors.")
print('"Good!" thought a happy Python reviewer.')

结果为:

图片 4

String.png

之所以说,除非想在字符串内包罗单引号或许双引号,每叁个Python文件最棒应用同一种标识。
对此单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码调换为对应的字符:

图片 5

ord和chr.png

只要精晓字符的整数编码,还能够用十陆进制这么写str(unicode格局):

图片 6

uniode中文.png

如果要在网络上传输,也许封存到磁盘上,就要求把str变为以字节为单位的bytes。Python对bytes类型的数目用带b前缀的单引号或双引号表示:

var = b"ABC"

要小心区分’ABC’和b’ABC’,前者是str,后者尽管内容展现得和前者同样,但bytes的各样字符都只占用3个字节。
以Unicode表示的str通过encode()方法能够编码为内定的bytes,例如:

图片 7

encode.png

纯英文的str能够用ASCII编码为bytes,内容是平等的,含有普通话的str能够用UTF-8编码为bytes。含有中文的str不恐怕用ASCII编码,因为中文编码的限制超越了ASCII编码的限制,Python会报错。
转头,从bytes到str能够用decode方法,原理和操作都以同壹的,不再赘言了。
聊到底,能够看下len方法,len是length的缩写,翻译过来正是持筹握算str大概bytes的字符字节数,比方:

图片 8

len.png

可知,一个中文字符经过UTF-八编码后平日会占用1个字节,而贰个英文字符只占用一个字节。
在操作字符串时,大家平时碰到str和bytes的交互转换。为了防止乱码难题,应当始终百折不挠利用UTF-8编码对str和bytes进行改动。
还有其余一些常用的法子,如spli(分割),
join(拼接),replace(替换),upper(大写),lower(小写),strip(去除两端空格),lstrip(去除左端空格),rstrip(去除右端空格)等,用法都相比轻便,可参看源码调用就可以。

  难题的来自,在于UTF-八那种编码里面,存在3个特殊的字符,其编码是“0xC2
0xA0”(194
160),转变到字符的时候,表现为二个空格,跟一般的半角空格(ASCII
0x20)同样,唯一的分化是它的增长幅度不会被压缩,因而比较多的被用于网页排版(如首行缩进之类)。而任何的编码格局如GB231二、Unicode之类并不曾这么的字符。

除此以外,encodeUHavalI/encodeU奥迪Q7IComponent是在java壹.五事后引入的,escape则在java1.0版本就有。
1、 
传递参数时索要利用encodeUPAJEROIComponent,这样组合的url才不会被#等特殊字符截断。

 

三、  js使用数据时可以动用escape

发表评论

电子邮件地址不会被公开。 必填项已用*标注