访问编码中文网址返回404错误的解决方案
我昨天做了一个项目。其中一个要求是每张图片对应一小段文字来解释图片。通常的做法是创建一个新表,然后将图片名称和描述文本记录到数据库中。仔细考虑了一下,觉得这个应用不用数据库也能完成。我实现的方案是使用解释文本URLENCODE作为文件名,这样在读取文件时,就可以使用文件名urlendecode来驱动图片的文本描述。
但是,当您通过浏览器访问图片时,系统会提示您找不到该文件。如果有标题为“琼台博客”的图片,URLENCODE后生成的文件名如下。
复制代码如下:琼台blog.jpg。
于是我通过浏览器访问了图片,提示我找不到。
仔细看了一下,发现浏览器访问时,文件名会自动调回中文。
赤狐
铬
工业管理学(Industrial Engineering)
旅行队
IE和Safari没有看到从地址栏转换成汉字,但都表示找不到文件。不过我感觉是请求时自动转的,只是地址栏里的那个没有显示转换后的那个。从Nginx的访问记录中查看访问图片的请求。
复制的代码如下:192 . 168 . 6 . 30-[12/oct/2012:1033609336044 0800]' get/琼台blog.jpg http/1.1 ' 404199 '-' ' Mozilla/5.0(兼容。MSIE 9.0Windows NT 6.1三叉戟/5.0)'
URL处理没有异常。最后反复研究编码后的文件名,发现都是由百分号和字母数字组成的。感觉浏览器在遇到百分制的时候可能会做一些其他的转换处理,导致浏览器访问URLENCODE后的文件提示找不到。
所以我用下划线替换了URLENCODE之后所有文件名中的百分号。
复制代码如下:琼台blog.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。具体的实现方法我就不举例了。让我们去做,去思考!
版权声明:访问编码中文网址返回404错误的解决方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。