您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Linux >> 包含中文字符url访问服务器中文文件名资源

包含中文字符url访问服务器中文文件名资源

来源:网络整理     时间:2018/1/24 0:51:59     关键词:

关于网友提出的“ 包含中文字符url访问服务器中文文件名资源”问题疑问,本网通过在网上对“ 包含中文字符url访问服务器中文文件名资源”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 包含中文字符url访问服务器中文文件名资源
描述:

describle

环境:PHP + Nginx
服务器为Ubuntu10,字符编码为utf-8.
现在我有些资源文件是中文名,通过url访问这些资源文件(Nginx服务器配置静态文件)。

服务器脚本通过header函数设置浏览器编码为utf-8

例子:http://images.61duocai.com/flash/xueshuxue/统一测量标准.swf,但是该文件报个404 not found.

try

然后我做了以下处理:使用 iconv函数和mb_convert_encoding,把这个中文文件名转成gb2312.

但是一打印成这样:

http://images.61duocai.com/flash/xueshuxue/?????????.swf.

我期望的应该是这样:

http://images.61duocai.com/flash/xueshuxue/í3ò?2aá?±ê×?.swf

question

对于使用包含中文的url访问资源,你们提供一些思路吗?
其实我很想知道为什么我将中文转换成了gb2312,HTML charset也设置成了utf-8形式,最终的结果不是预期的那样,感觉像是又搞了一次编码。为什么会这样?
谢谢。

补充内容

我已经尝试过urlencode,分别对
http://images.61duocai.com/flash/xueshuxue/?????????.swf

http://images.61duocai.com/í3ò?2aá?±ê×?.swf

进行编码结果是一样,但是最终还是访问不到服务器资源,因为服务器最终还是会对url解码的。

Append:

我现在想知道í3ò?2aá?±ê×?这种是什么编码?

我的处理方式

设置无语言编码
LC_ALL=C
7z解压
然后convmv批量改名


解决方案1:

尽量不要用中文名。。

解决方案2:

%e7%bb%9f%e4%b8%80%e6%b5%8b%e9%87%8f%e6%a0%87%e5%87%86.swf
解决方案3:

不应该转换为GB2312,因为Linux默认的系统编码是UTF-8。全程都是UTF-8,应该没问题的。你在客户端抓一下包(开发人员工具就行),看看服务器返回的HTTP标头有没有encoding,URL编码成了什么。网页里的Meta和服务器脚本都应该设置Charset。

解决方案4:

最后的解决方案,批量处理服务器上的中文名称,转成拼音。

解决方案5:

这个有时候是浏览器设置,要求浏览器以utf-8发送url,此外还要自动进行urlencode

解决方案6:

urlencode

解决方案7:

你既然在Linux下跑,就意味着环境就是UTF-8,所以也不必在服务器侧转换,你需要做的只是让客户端请求正确的,中文部分经过编码的url

我猜楼主更有可能是从Win下拷过去的文件,win 下的文件名是GBK,需要使用支持转换的FTP工具


以上介绍了“ 包含中文字符url访问服务器中文文件名资源”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4534014.html

相关图片

相关文章