saber 酱的抱枕

Fly me to the moon

02/20
2017
学习

url参数中特殊字符的转义处理

如果url中有特殊字符符号,可能会导致url不能被正确识别。

我们可以在传递参数前将url编码来解决这个问题。不过需要注意的是,有些字符在url中有独特的作用的(例如#表示锚点位置,&表示连接多个参数),所以JavaScript的encodeURI函数(意思是编码url)是不能编码这些有单独意义的字符的的。需要把它们也转码的话需要用encodeURIComponent函数(意思是编码url组件)。

下面直接列出一下有特殊含义的字符及其编码后的结果:

+    URL 中+号表示空格                                %2B
空格 URL中的空格可以用+号或者编码             %20
/   分隔目录和子目录                                     %2F
?    分隔实际的URL和参数                              %3
%    指定特殊字符                                         %25
#    表示书签                                                %23
&    URL 中指定的参数间的分隔符                  %26
=    URL 中指定参数的值                                %3D

url参数中特殊字符的转义处理

09/13
2016
学习

JavaScript过滤PHP中不允许做文件名的字符

var reg = new RegExp(/'|#|&|\\|\/|:|\?|"|<|>|\*|\|/g);
string=string.replace(reg,"_");

JavaScript本身不能方便的保存文件,所以我做的几个下载器是用ajax把文件参数传给PHP,然后由PHP去建立文件的。这个正则用来过滤掉一些不能做文件名的特殊字符/特殊符号。

这个正则去掉了以下字符串:

 ' # & \ / : ? " < > * | 

注意前3个其实是能在windows中做文件名的。只是用在url中就可能会出现意外情况。

其中'会导致php创建文件时路径异常而失败(它被当做单引号了,包裹着字符串);
#则是不能用在get传递的参数里,(因为从#开始往后的字符都会被当做锚点信息,不会被当做参数);
参数里也不能出现我们意料之外的“&”,所以&也去掉(可以考虑下替换成&的转义字符);
剩下几个是windows资源管理器中不允许做文件名/文件夹名的字符。

这个列表权当是一点微小的贡献。

JavaScript过滤PHP中不允许做文件名的字符

08/27
2014
其他

特殊字体之菊花文

今天在B站看到了一个弹幕:

҉S҉Y҉过҉多҉会҉导҉致҉视҉觉҉模҉糊҉

我很好奇这是怎么打出来的,后来去搜索引擎搜,百度搜不出特殊字符,于是去bing,搜索出“菊花文”这玩意,然后又到百度百科看了下,基本就是把汉字和特殊字符打一起,出来就是这效果。还有一个在线转换的工具

这类文字据说由于有特殊字符,在贴吧论坛不会被和谐。不过有些游戏名大概也不能用了。另外这文字在不同浏览器下似乎显示也不尽相同,不同字体的显示效果也不同

特殊字体之菊花文