json_encode、scandir()和操作系统编码的关系。
来源:互联网 发布:mac os pkg 安装u盘 编辑:程序博客网 时间:2024/06/01 10:59
在写一个将后台获取的目录名传到前台时,遇到一个问题。
代码如下:
//切换到根目录chdir("/");//获得当前目录$dir = getcwd();$file_dir_arr = scandir($dir);foreach ($file_dir_arr as $key => $value) {if(is_dir($dir."/".$value)){$dir_arr[] = $value;}}echo json_encode($dir_arr);在window 10中文简体版上运行,可是输出结果空白。print_r($dir_arr); 可以正常打印,获取的目录名中存在中文目录。
查看php手册发现 json_encode() 只能接受utf-8,那么可能的原因就是 $file_dir_arr 不是 utf-8 编码。
echo mb_detect_encoding($dir_arr[38], array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); 其中$dir_arr[38] 是中文目录名,输出 EUC-CN.
百度得知:EUC-CN是GB2312最常用的表示方法。可知scandir() 函数的返回值其编码是EUC-CN,所以json_encode()无法处理。
如果将上述代码放到linux系统下运行,并且存在中文目录的情况下,echo mb_detect_encoding($dir_arr[38], array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));输出 uft-8 。
0 0
- json_encode、scandir()和操作系统编码的关系。
- json_encode编码 和json_decode解码
- json_encode编码 和json_decode解码
- PHP字符编码(UTF-8/GBK)与json_encode/json_decode的关系
- 编译程序和操作系统的关系
- json_encode只支持UTF8编码的字符
- php的json_encode()中文编码问题
- ajax 编码函数的运用 json_encode() json_decode()
- json_encode和json_decode的用法
- json_encode()和json_decode()的用法
- php数组使用json_encode函数中文被编码成null的原因和解决办法
- php数组使用json_encode函数中文被编码成null的原因和解决办法
- php中的json_encode()和json_decode()编码与反编码
- 操作系统中字符与字节的编码关系
- java的jvm和操作系统的关系
- scandir、direct的用法
- linux scandir 的使用
- linux scandir 的使用
- caffe层解读系列——slice和concat实现MultiTask
- IO流_ IO流技术概述
- ultraedit matlab
- 如何在ubuntu 12.04系统下通过vivi的命令行来启动mini2440的nfs网络文件系统
- web实训课笔记
- json_encode、scandir()和操作系统编码的关系。
- img标签--src属性:相对路径和绝对路径
- Struts2笔记--1
- Qt5 模块简介
- 微信小应用资源汇总整理
- 前端自动化管理工具grount
- c
- Java中的线程池
- HCIE知识整理:ospf 的 virtual-link 有哪些用途,在用的时候可能会有什么问题,解决方案是 什么?