Joh*_*015 5 php filenames encoding utf-8 windows-7
更新:只是为了不让你全部阅读:从7.1.0alpha2开始的PHP支持Windows上的UTF-8文件名.(感谢Anatol-Belski!)
在stackoverflow上的一些链接链接后,我找到了部分答案:
Umberto Salsi的
/sf/answers/709669341/
(以及同一个问题:https://stackoverflow.com/a/2950046/3716796
by Artefacto)
简而言之:'PHP与底层文件系统进行通信,作为"非Unicode感知程序",并且由于Windows,所有由PHP提供给PHP的文件名(反之亦然)由Windows自动翻译/重新编码.这会导致错误.你似乎无法阻止自动重新编码.
(和/sf/answers/202162761/ 由Artefacto:
" PHP不使用宽WIN32 API调用,所以你用的代码页的限制.")
而在HTTPS://bugs.php. net/bug.php?id = 47096 有PHP的错误报告.
虽然在那里尼古拉斯建议,COM对象可能会工作!
$ fs = new COM('Scripting.FileSystemObject',null,CP_UTF8);
也许我会有时候尝试一下.
所以我的问题还有一部分:PHP6出来了,还是被撤回了,或者PHP上有关于该主题的新内容?
//完整问题
关于这个主题的大多数问题都是1到5年.php现在可以使用file_put_contents($ dir.'/'.$ _POST ['fileName'],$ _POST ['content'])保存文件;
当$ _POST ['fileName']是UTF-8编码时,例如"Крым.xml"?目前它保存为КрÑ<м.xml
我检查了fileName变量,所以我可以确定它是UTF-8:echo mb_detect_encoding($ _ POST ['fileName']);
我的结论:
1.当将fileName(我尝试将转换为UTF-16,UTF-16LE,ISO-8859-1和Windows-1252)移交给Windows,
2或file_put_contents 时,file_put_contents无法正常工作
没有实现以适当的方式调用Windows自己的文件函数的方法(所以第二种可能性意味着它不是一个bug而只是没有实现.)(例如,notepad ++创建,编写和重命名一个名为Крым的文件没有问题.XML).
我收到的错误消息只是一个例子,在这种情况下,当我使用mb_convert_encoding($ theFilename,'Windows-1252','UTF-8')时
"警告:file_put_contents(dirToSaveIn/????.xml):无法打开流:第26行的C:\ aa xampp\htdocs\myinterface.lo\myinterface\phpWriteLocalSearchResponseXML.php没有错误"通过其他转换我得到了其他错误消息,从"无效字符"到完全没有识别的字符串.
问候约翰
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |