1. 程式人生 > >json_encode、scandir()和作業系統編碼的關係。

json_encode、scandir()和作業系統編碼的關係。

在寫一個將後臺獲取的目錄名傳到前臺時,遇到一個問題。

程式碼如下:

	//切換到根目錄
	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 。

相關推薦

json_encodescandir()作業系統編碼關係

在寫一個將後臺獲取的目錄名傳到前臺時,遇到一個問題。 程式碼如下: //切換到根目錄 chdir("/"); //獲得當前目錄 $dir = getcwd(); $file_dir_arr

微控制器CPU指令集作業系統關係

鄭重宣告:轉載自http://blog.csdn.net/zhongjin616/article/details/18765301 1> 首先討論各種微控制器與作業系統的關係 說到微控制器,大家第一時間想到的應該是51微控制器,對吧。不錯,更高階一點的AVR,把他稱為微控制器,我們也還覺得可以接受。那

JavaJVM作業系統之間的關係,寫給新人,

來張圖:這個帖子寫給新人的,老玩家就直接無視他,因為這個完完全全是白話基礎原理。 解釋:上面的圖是從上往下依次呼叫的關係。 作業系統(Windows/Linux)管理硬體,讓硬體能夠正常、合理的執行,當然各種硬體的驅動實現了作業系統的介面,作業系統呼叫這些介面就能管理硬體

CGIfastcgiWSGIuwsgiuWSGI的關係

1.CGI(Common Gateway Inteface) 通用閘道器介面,是外部應用程式與Web伺服器之間的介面標準,用來規定一個程式該如何與web伺服器程式之間通訊 從而可以讓這個程式跑在web伺服器上。 2.fastcgi fastcgi是Web伺服器(ex:nginx)和語言直

域名瀏覽器HSTSHTTPS的關係

1.瀏覽器的轉換: 大家可以找一個瀏覽器試驗一下,我用的是谷歌的chrome瀏覽器,當你在位址列輸入 baidu.com,然後你再按回車,你發現了什麼? 對,位址列已經把地址自動轉換為  https://www.baidu.com了。這種第一種可能是伺服器的重定向導致的,第二

JS中建構函式與普通函式的區別及JS建構函式原型例項的關係

JS中建構函式與普通函式的區別: https://www.cnblogs.com/cindy79/p/7245566.html JS建構函式、原型和例項的關係: https://blog.csdn.net/u012443286/article/details/78823955 Java

Centos系統下解除安裝安裝MySQL及使用者的建立授權使用(詳細

由於經常使用linux系統,並且大資料環境搭建中經常會使用到mysql,不像windows系統下的安裝,今天有點空寫一篇,下面我給大家演示一遍。 主要有三部分內容: 1、MySQL的解除安裝 2、MySQL的安裝 3、MySQL使用者的授權和使用者建立、刪除 一、MySQL的解除安裝(如果是僅僅安裝

架構框架設計模式關係

  在學習軟體工程的時候,第一次接觸到了架構這個概念。當初接觸的時候對其的理解是非常淺薄的,因為那時候工程經驗比較少,對這樣一個深層次的概念還是模糊不清楚的。        隨著學習的深入,開始接觸了設計模式,也就是那本令我愛上程式設計的書--《大話設計模式》,書中的小

HTMLXMLJSON的關係

{ "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hu

深入理解JavaScript函式建構函式物件prototype(原型物件)的關係

學了這麼久前端,一直搞不明白函式與物件之間的關係,實在慚愧,是時候總結一下了。。以下是學習時的記錄,若有錯誤之處,請指出。。 首先我們要知道js中的資料型別有以下幾種: Number   Boolean   undefined     Object &

讀 《理清技術業務架構的關係》有感

這篇文章一個很重要的觀點是,業務目標催生技術,而進一步演化產生架構。這種看法與自頂向下的設計模型是有區別的,更符合真實世界的對映。 這與極限程式設計的觀點也很像,在業務需求的驅動下,使用一定技術著手實現,然後不斷重構,迭代設計,產生架構。 這裡從簡單來看技術實現目標,架構

《head first java》類物件屬性方法的關係

類的定義:類是對某一類事物的描述,是抽象的、概念上的意義。 屬性表示類的特性,如 類——冰箱 屬性——價格、耗電量、體積 方法表示類的功能,類能做什麼,如 類——冰箱 方法——儲存、冷凍等 類需要通過class來宣告 class 類名稱{ 屬性 方法 } 函

一句話總結JS建構函式原型例項的關係

”每個建構函式都有一個原型物件, 原型物件都包含一個指向建構函式的指標, 例項都包含一個指向原型物件的內部指標。” ——此段話摘自《JavaScript高階程式設計》。 下面結合例項簡要分析: 一、每個建

CGIFastCGIPHP-FPM關係

閘道器 API(閘道器 應用程式設計介面),SAPI(伺服器端應用程式設計介面),CGI(web通用網管介面) 瀏覽器(客戶端) HTTP web server SAPI web application CGI – PHP CGI FastCGI、IIS ISAPI PH

SurfaceSurfaceFlingerCanvas的關係

而Surface簡單的說,對應了一塊螢幕緩衝區,每個window對應一個Surface,任何View都要畫在Surface的Canvas上。傳統的view共享一塊螢幕緩衝區,所有的繪製必須在UI執行緒中進行。 2 、SurfaceFlinger和Surface: SurfaceFlinger英文直譯就是su

IPictureBITMAPHBITMAPCBitmap的關係

1、有關IPicture載入圖片後直接Render到記憶體DC的問題(HBITMAP 轉換 IPicture) Picture的方法get_Handle可以直接得到圖片的控制代碼 IPicture *pIPicture; HBITMAP hBitmap; ... pIPicture->get_Hand

ROS基礎內容2--通訊方式之Topic以及nodetopicmessage的關係

本文參考了ROS_Kinetic_05 ROS基礎內容,在本人的計算機環境ubuntu16.04 64bit+kinetic基礎上進行實踐。1. ROS節點node的基本概念和操作涉及到的基本概念:Nodes:節點,一個節點即為一個可執行檔案,節點之間通過ROS這個系統進行通

java基礎——InputStreamInputStreamReaderReader的關係

InputStream:得到的是位元組輸入流,InputStream.read("filename")之後,得到位元組流 Reader:讀取的是字元流 InputStreamReader:從位元組到字元的橋樑。InputStreamReader(InputStream.read("filename"));

關於tomcat678編碼上的不同

經過本人自己測試,tomcat 6 7 需要在server.xml中設定 <Connector connectionTimeout="20000" port="8080" protocol="

c標準基本庫函式:libcglibcglib的關係

【glibc 和 libc】 glibc 和 libc 都是 Linux 下的 C 函式庫。 libc 是 Linux 下的 ANSI C 函式庫;glibc 是 Linux 下的 GUN C 函式庫。 ANSI C 和 GNU C 有什麼區別呢?