昨天做一个项目,其中有一个需求是每一张图片对应一小段文字对图片的说明,普通的做法是新建一个表然后把图片名与说明文字都记录到数据库内。仔细考虑后感觉这个应用不要数据库也能完成,我实现的方案是把说明文字URLENCODE后当做文件名,这样当我读取文件的时候再把文件名URLDECODE就可以后驱图片的文字说明了。

可是通过浏览器访问图片时却提示找不到文件,如有一张图片的说明文字为“琼台博客”,URLENCODE后生成的文件名如下

%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg

于是我通过浏览器访问图片,提示找不到

仔细看了一下,发现浏览器访问的时候自动把文件名给转回中文了

火狐

chrome

IE

Safari

IE与Safari从地址栏上没有看出转为汉字,但也同样都提示找不到文件。但我感觉应该是它请求的时候也都自动转了,只不过地址栏上的没有显示转换后的。从Nginx的访问记录看访问图片时的请求情况

192.168.6.30 - - [12/Oct/2012:10:09:44 +0800] "GET /%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg HTTP/1.1" 404 199 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

请求URL处理没发现什么异常,最后通过反复研究编码后的文件名,发现都是由百分号与字母数字组成,我感觉应该是浏览器在遇到百分号时可能会做些其它转换处理了,所以导致浏览器访问URLENCODE后的文件提示找不到。

于是我把所有URLENCODE后的文件名里的百分号都用下划线替换

%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg

替换为

_E7_90_BC_E5_8F_B0_E5_8D_9A_E5_AE_A2.jpg

重新使用浏览器访问,问题解决

如要获取图片的文字说明,直接把文件名的“_”替换回"%”再使用URLDECODE即可。

最后需要注意的是,Linux下文件名跟Win系统一样都有长度限制,目前最常用的格式为ext3,这中格式允许255个字符长度,扣除大约5个作为拓展名后大约剩余250个长度纯文件名,而一个汉字经过URLENCODE后的长度为9个,因此最大可以编码27个汉字做为文件名。

虽然这种方式存储的汉字比较少,但可以利用一些加密方法获得较短的一串密文,再把这段密文URLENCODE即可,具体实现方式我就不一一举例,动手做做思考一下吧!

安全狗php站点404,访问编码后的中文URL返回404错误的解决方法相关推荐

  1. php连接数据库404错误代码,访问编码后的中文URL返回404错误的解决方法,url404_PHP教程...

    访问编码后的中文URL返回404错误的解决方法,url404 昨天做一个项目,其中有一个需求是每一张图片对应一小段文字对图片的说明,普通的做法是新建一个表然后把图片名与说明文字都记录到数据库内.仔细考 ...

  2. 360站长平台提交站点地图sitemap.xml抓取的url数量为0的解决方法

    解决方法一:不要提交https的sitemap,提交http的即可成功 解决方法二:如果提交http的还没有成功,请检查自己的sitemap.xml格式是否是UTF-8的,不是换成UTF-8即可成功 ...

  3. gtkpod + ipod-convenience 后同步 iTunes 出现 -54 未知错误的解决方法

    谁让咱们手贱呢- 因为登录 itouch 更新的时候用的是 root 权限,导致 itouch 使用 mobile 登录后同步数据库的时候没有权限更新数据库. 其实我认为是这个问题,不过,网上的结论是 ...

  4. idea创建web项目运行报404错误_IDEA JavaWeb项目启动运行后出现404错误的解决方法...

    404这个错误真的是一言难尽!不过大多是配置文件出错,认真修改还是可以的 1.web.xml配置错误: 默认首页没有写的,在web.xml添加一个就行(前提是你有jsp页面,名字不要写错): 比如这个 ...

  5. xp打印服务器win10的系统连接不上,Win10系统访问WinXP系统共享打印机却连接不了的解决方法...

    在今天的Win10系统的使用教程中,我们将来学习的是Win10系统访问WinXP系统共享打印机却连接不了的问题.不过,小编得事先说一下,Win10系统是可以直接连接WinXP系统共享打印机的,只是个别 ...

  6. VS2005+ACCESS WEB程序出错数据访问权限错误的解决方法

    最近使用VS2005+ACCESS写了一个网站管理系统,上传到服务器上后,在删除数据和新增加数据时总是出错,在本地调试又没有问题.经过检查,原来是服务器的数据库文件没有修改权限,修改数据库文件的访问权 ...

  7. 局域网访问提示无法访问检查拼写_Win7访问共享文件夹提示请检查名称的拼写的解决方法...

    在平时的工作中,我们常常要与同事共享文件夹,因为这样子效率比较快,但是不少用户反映说自己的Win7访问共享文件夹时会提示"请检查名称的拼写",那么遇到这个问题该怎么办?不知道的朋友 ...

  8. 无法访问计算机请检查名称的拼写,Win7系统访问共享文件夹提示“请检查名称的拼写”的解决方法...

    在办公过程中经常和同事之间共享文件夹,这样方便阅读和管理,提高工作效果.可是一些Win7专业版系统用户说访问共享文件夹提示"请检查名称的拼写",导致文件无法正常打开使用,这是怎么回 ...

  9. 〖Linux〗Kubuntu KDE开机后总是提示“system program problem detected”的解决方法

    [Linux]Kubuntu KDE开机后总是提示"system program problem detected"的解决方法 参考文章: (1)[Linux]Kubuntu KD ...

最新文章

  1. Spring多数据源配置和使用
  2. 栈之顺序结构和链式结构
  3. 圣迪奥康扉多功能防辐射卡
  4. 从零开始做Vue前端架构(5)
  5. Activity和Service通信 使用BroadcastReceiver
  6. “杀”一个程序员不需要用枪,改三次需求就可以了!
  7. 授人以鱼不如授人以渔,UCHome全面大解析培训活动【第三集】
  8. 统计学习方法笔记(李航)———第四章(朴素贝叶斯法)
  9. QQ炫舞登录完后服务器没显示,qq炫舞进入界面后就没有了怎么回?
  10. STM32工作笔记0084---UCOSIII软件定时器
  11. JMeter学习笔记(四)
  12. vim编辑器永久显示行号
  13. AD9361 补充(中)
  14. 纯屏和液晶显示器有什么区别
  15. 写口算用计算机作文600字,口算比赛作文600字
  16. WinEdt教程 表格,图像,公式,段落
  17. spring定时任务@schedule
  18. linux系统手柄模拟器下载,Switch Amiibo模拟器(Windows|Linux PC + JoyControl + Bluetooth)...
  19. SAP中系统中导出所有采购协议中最后一次收货记录
  20. 树莓派 编译安装OpenCV4.1.0+opencv_contrib-4.1.0

热门文章

  1. tomcat配置manager
  2. Python基础(11)--面向对象1
  3. Java集合知识:TreeMap
  4. 融资3000万,腾讯大佬随手开发的工具到底有多牛?
  5. 谈谈Tomcat连接器
  6. 什么是布隆过滤器?如何解决高并发缓存穿透问题?
  7. 某程序员吐槽清华北大不值钱了!过去清北毕业生去企业上班就是丢人现眼!现在互联网基层员工一堆清北人!清北怎么混成这样了?...
  8. ZooKeeper最佳指南--云平台技术栈11
  9. jvm的那些设置参数你都知道吗
  10. 国内外最好用的9大工作任务管理软件