首页 > 编程语言 >【编码】PHP中文路径问题

【编码】PHP中文路径问题

时间:2022-11-26 00:22:38浏览次数:42  
标签:编码 中文 PHP require 路径 test fopen php

低版本的PHP可能会遇到不支持中文路径的情况:

  1. require('http://localhost/中文路径/test.php');
  2. require('\中文路径\test.php');
  3. $file = fopen('http://localhost/中文路径/test.php');
  4. $file = fopen('\中文路径\test.php');

在Windows10+Apache2.4.41+PHP5.6.40环境下,测试文件编码为UTF-8,会发现除了用fopen打开URL外(3),其他(包括用fopen打开相对路径)都会报错:No such file or directory

如果对路径进行转码:

  1. require(iconv('utf-8', 'gbk', 'http://localhost/中文路径/test.php'));
  2. require(iconv('utf-8', 'gbk',  '\中文路径\test.php');
  3. $file = fopen(iconv('utf-8', 'gbk', 'http://localhost/中文路径/test.php'));
  4. $file = fopen(iconv('utf-8', 'gbk',  '\中文路径\test.php');

发现:(2)和(4)成功运行,(1)和(3)报错,但这次是Apache报错:HTTP/1.1 403 Forbidden

据此得出结论:

  1. 用require和fopen打开URL,会向Apache服务器请求资源,但Apache只支持解析UTF-8编码的路径
  2. 用require和fopen打开相对路径,直接与Windows文件系统交互,即ANSI编码

但是,为什么require打开UTF-8或者GBK编码的URL都会失败呢?

标签:编码,中文,PHP,require,路径,test,fopen,php
From: https://www.cnblogs.com/victorique-de-blois/p/16926739.html

相关文章

  • 用C#生成随机中文汉字验证码的基本原理
    1、汉字编码原理到底怎么办到随机生成汉字的呢?汉字从哪里来的呢?是不是有个后台数据表,其中存放了所需要的所有汉字,使用程序随机取出几个汉字组合就行了呢?使用后台数据库先将......
  • 如何在PHP开启gzip页面压缩实例
    示例一(用php的内置压缩函数):<?PHPif(Extension_Loaded('zlib'))Ob_Start('ob_gzhandler');Header("Content-type:text/html");?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDX......
  • PHP:10个不常见却非常有用的PHP函数
    1.sys_getloadavg()sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。与其让服务器因......
  • Visual Studio下的PHP开发工具VS.PHP初探
    做程序开发,离不开好的IDE。微软的VisualStudio一直是.NET平台程序员的必备工具,对于PHP程序员来说都是使用Editplus或PHPEditor等轻量级开发工具。对于编写小的PHP程序还......
  • jQuery 1.4官方文档中文版
    PeanutButterJelly").sortable().bind("endsort",function(){$(":text.food").val(function(){return$("ul.sortableli:eq("+$(this).attr("data-index")+")......
  • C# unicode 编码 和 解码
    首先转换方面:1.byte[]2.bytes=System.Text.Encoding.UTF8.GetBytes(msgStr);3.bytes=Encoding.Convert(Encoding.UTF8,Encoding.Unicode,bytes);4.byt......
  • 【编码】urlencode
    相关文章URL汉字编码问题(及乱码解决)-乐在其中/Leo在其中-ITeye博客一文详解URLEncode-xiaxueliang-博客园(cnblogs.com)......
  • ThinkPHP6.0在phpstorm添加查询构造器和模型的代码提示
    ThinkPHP6.0升级后使用查询构造器和模型都没有了提示原因是tp6源码中没有添加注释找到Model.php*@methodQuerywhere(mixed$field,string$op=null,mixed$con......
  • thinkphp6文件上传自定义命名规则
    think官方自带的命名规则有三种规则描述date根据日期和微秒数生成md5对文件使用md5_file散列生成sha1对文件使用sha1_file散列生成其中md5和sha1......
  • 【编码】Unicode编码模型
    1.为什么使用Unicode?Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。在Unicode标准中,提供了1,114,112个......