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_encode、scandir()和作業系統編碼的關係。
在寫一個將後臺獲取的目錄名傳到前臺時,遇到一個問題。 程式碼如下: //切換到根目錄 chdir("/"); //獲得當前目錄 $dir = getcwd(); $file_dir_arr
微控制器、CPU、指令集和作業系統的關係
鄭重宣告:轉載自http://blog.csdn.net/zhongjin616/article/details/18765301 1> 首先討論各種微控制器與作業系統的關係 說到微控制器,大家第一時間想到的應該是51微控制器,對吧。不錯,更高階一點的AVR,把他稱為微控制器,我們也還覺得可以接受。那
Java、JVM和作業系統之間的關係,寫給新人,
來張圖:這個帖子寫給新人的,老玩家就直接無視他,因為這個完完全全是白話基礎原理。 解釋:上面的圖是從上往下依次呼叫的關係。 作業系統(Windows/Linux)管理硬體,讓硬體能夠正常、合理的執行,當然各種硬體的驅動實現了作業系統的介面,作業系統呼叫這些介面就能管理硬體
CGI、fastcgi、WSGI、uwsgi和uWSGI的關係
1.CGI(Common Gateway Inteface) 通用閘道器介面,是外部應用程式與Web伺服器之間的介面標準,用來規定一個程式該如何與web伺服器程式之間通訊 從而可以讓這個程式跑在web伺服器上。 2.fastcgi fastcgi是Web伺服器(ex:nginx)和語言直
域名、瀏覽器、HSTS和HTTPS的關係
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的解除安裝(如果是僅僅安裝
架構、框架和設計模式關係
在學習軟體工程的時候,第一次接觸到了架構這個概念。當初接觸的時候對其的理解是非常淺薄的,因為那時候工程經驗比較少,對這樣一個深層次的概念還是模糊不清楚的。 隨著學習的深入,開始接觸了設計模式,也就是那本令我愛上程式設計的書--《大話設計模式》,書中的小
HTML、XML和JSON的關係
{ "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高階程式設計》。 下面結合例項簡要分析: 一、每個建
CGI、FastCGI和PHP-FPM關係
閘道器 API(閘道器 應用程式設計介面),SAPI(伺服器端應用程式設計介面),CGI(web通用網管介面) 瀏覽器(客戶端) HTTP web server SAPI web application CGI – PHP CGI FastCGI、IIS ISAPI PH
Surface、SurfaceFlinger和Canvas的關係
而Surface簡單的說,對應了一塊螢幕緩衝區,每個window對應一個Surface,任何View都要畫在Surface的Canvas上。傳統的view共享一塊螢幕緩衝區,所有的繪製必須在UI執行緒中進行。 2 、SurfaceFlinger和Surface: SurfaceFlinger英文直譯就是su
IPicture、BITMAP、HBITMAP和CBitmap的關係
1、有關IPicture載入圖片後直接Render到記憶體DC的問題(HBITMAP 轉換 IPicture) Picture的方法get_Handle可以直接得到圖片的控制代碼 IPicture *pIPicture; HBITMAP hBitmap; ... pIPicture->get_Hand
ROS基礎內容2--通訊方式之Topic以及node、topic和message的關係
本文參考了ROS_Kinetic_05 ROS基礎內容,在本人的計算機環境ubuntu16.04 64bit+kinetic基礎上進行實踐。1. ROS節點node的基本概念和操作涉及到的基本概念:Nodes:節點,一個節點即為一個可執行檔案,節點之間通過ROS這個系統進行通
java基礎——InputStream、InputStreamReader和Reader的關係
InputStream:得到的是位元組輸入流,InputStream.read("filename")之後,得到位元組流 Reader:讀取的是字元流 InputStreamReader:從位元組到字元的橋樑。InputStreamReader(InputStream.read("filename"));
關於tomcat6、7和8編碼上的不同
經過本人自己測試,tomcat 6 7 需要在server.xml中設定 <Connector connectionTimeout="20000" port="8080" protocol="
c標準基本庫函式:libc、glibc和glib的關係
【glibc 和 libc】 glibc 和 libc 都是 Linux 下的 C 函式庫。 libc 是 Linux 下的 ANSI C 函式庫;glibc 是 Linux 下的 GUN C 函式庫。 ANSI C 和 GNU C 有什麼區別呢?