設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 887|回復: 0
打印 上一主題 下一主題

json_encode error as strftime return string is not utf8 in Windows 7/8/8.1

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-3-10 08:49:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
從 phpmyadmin 4.1.0 開始就覺得怪怪了,直到目前最新版 4.4.0-alpha1都一樣,有個大問題就是無法看資料表結構。
PHP 本身也存在某些相容性問題要注意
Util.class.php(path in \PhpMyAdmin\libraries) 的 1614 行裏頭有一行
return strftime($date, $timestamp);
只要暫時改成
return date("Y-m-d: H:i:s" , $timestamp);

這樣可以解決無法在 phpmyadmin 看資料表結構的問題

會發生錯誤是因為,phpmyadmin 有很多地方會用 AJAX 的方式要求回傳 json 格式資料,
而 php 的 json_encode() 若遇到不正確的 utf8 字則會回傳 false,導致 phpmyadmin 要抓資料表結構的時候回傳一個空的網頁給前端就會出錯了。
這問題就是出在 strftime(),這個 strftime 會根據 OS 的語系及地區設定回傳相對應的編碼字串,而非完全為 utf-8。
基本上在 Win8 環境下測試他根本不吃 utf-8 字串只吃 big5。
因此以下這段完全以 utf-8 字串寫成的 code ,其中年,月,日三個字的中文在 win8 中文版和 CentOS Linux 下將會得到不同結果
echo strftime("%Y 年 %m 月 %d 日 %H:%M", time());如此就會造成 json_encode 的編碼發生錯誤了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-16 13:55 , Processed in 0.224383 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表