1. 程式人生 > >由於檔案編碼問題造成json_encode 中文變成null的解決辦法

由於檔案編碼問題造成json_encode 中文變成null的解決辦法

在使用json_encode時,如果檔案不是UTF-8格式並且陣列中存在中文,該中文會輸出為null

示例程式碼:

<?php
  $brand = array('id'=>'123456','name'=>'中國人');
  var_dump(json_encode($brand));
?>

輸出結果:
string(27) "{"id":"123456","name":null}"

使用下面這個函式解決了此問題:
<?php
  function gbk_to_utf8($data){
    if(is_array($data)){
      return array_map('gbk_to_utf8', $data);
    }
    return iconv('gbk','utf-8',$data);
  }
?>

示例程式碼:
<?php
  $brand = array('id'=>'123456','name'=>'聯想');
  var_dump(json_encode(gbk2utf8($brand)));
?>

在json_encode之前做一下gbk2utf8轉碼,此時輸出正確結果:
string(37) "{"id":"123456","name":"\u8054\u60f3"}"

\u8054\u60f3 為“聯想”的unicode碼,瀏覽器會自動轉換成文字。

注: php的json_encode函式只支援utf-8編碼,

若環境不支援的函式mb_convert_encoding    (  string

mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )   ) ,

需檢查是否開啟了extension=php_mbstring.so (linux下如果缺少這個模組要先用rpm裝好)

php的另一個編碼轉換函式iconv ( string iconv ( string $from_charset , string $to_charset , string $str ) )  經常和mb_convert_encoding互換使用

相關推薦

由於檔案編碼問題造成json_encode 中文變成null解決辦法

在使用json_encode時,如果檔案不是UTF-8格式並且陣列中存在中文,該中文會輸出為null 示例程式碼: <?php $brand = array('id'=>'123456','name'=>'中國人'); var_dump(json_

跨平臺檔案編碼和換行問題的解決辦法

  使用windows編輯,會有回車問題和編碼問題。換行問題: Win 換行 \r\n Linux 換行 \n Mac 換行 \r 。很多工具在這方面不相容,比如Shell。編碼問題: Linux 預設使用utf-8 (without BOM),Win 預設GBK。 linux下直接開啟win文件

Java插入中文到資料庫中文變成問號???解決辦法

在url後面新增引數:url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 DriverManager.getConnection("jdbc:mysql://localhost:3306/

關於json_encode中文null的情況

        記得以前在網上遇到過別人的求助帖,說是json_encode後發現json欄位有null的情況,那時自己也沒遇到過,就用一個笨的方法解決。 $arr = array('name'=>'牛人','hobby' => 'c好ode'); forea

JavaWeb request獲取引數造成中文亂碼問題解決方法

一、亂碼原因 當我們使用request物件,傳送請求時,會對你要獲取的引數進行編碼。在此過程中使用的編碼方式是ISO8859-1的編碼方式。而這種編碼方式是不支援中文的,所以會造成亂碼。 二、解決方法 首先介紹通用的解決方法,對於get和post提交方式都適用

利用FTPClient上傳的檔案中文名字亂碼解決辦法

新增下面這一段: if (FTPReply.isPositiveCompletion(ftpClient.sendCommand( "OPTS UTF8", "ON"))) {// 開啟伺服器對UTF-8的支援,如果伺服器支援就用UTF-8編碼,否則就使用本地編碼(GBK)

IDEA國際化檔案中文亂碼的解決辦法

 如果你是使用IDEA在進行開發,並且用到了國際化檔案,可能會出現中文顯示亂碼的情況,如下圖所示        這是由於我們沒有對IDEA進行相應的配置造成的,我們點選File------>"Settings...",如下圖所示。        在彈出的對話方塊中的搜尋

從CSV檔案匯入Hive出現中文亂碼問題解決

關於HIVE中文亂碼問題的解決辦法,網上有很多帖子,然而很多都是基於LINUX終端顯示字元的修改,其實上對於一些條件下的HIVE中文亂碼問題是無法解決的,如從CSV檔案匯入到HIVE中出現的中文亂碼問題。 大家都知道,HIVE原生的字元編碼是採用UTF-8方式的,這是支援

用java程式碼寫xml檔案時,出現中文亂碼的解決方法

phoneElement.addAttribute("name", "家庭電話");emailElement.setText("[email protected]");try {/*** 特別注意:* * java中有Writer類繼承下來的子類沒有提供編碼格式處理,所以dom4j也無法歲輸出的

Java插入中文到資料庫中文變成問號解決

之所以會出現亂碼,就是編碼方式不一致導致的 我們應該首先確定          1. eclipse和mysql資料庫中的編碼方式是否一致          2. 在連結資料時,有沒有在url裡面加上characterEncoding=utf8,也就是下圖這樣    

SQLServer 2008 匯入txt檔案中文亂碼問題解決辦法

工作需要需要將檔案匯入,對其他表進行操作,但是匯入後發現中文全都亂碼了,現在將匯入步驟及問題解決辦法總結如下: 準備好資料庫和要匯入的.txt檔案 第一步: 第二步: 第三步:依次進入下一步,直到如下所示: 如下圖設定欄位格式: 總之遇到漢字亂碼問題,就設定編碼格式

SpringCloud 上傳檔案,經過Zuul,中文檔名亂碼解決辦法

網上比較常見的解決方案是在uri前加/zuul 使用zuul的servlet繞開springmvc來解決上傳檔案亂碼問題 比如:原來你上傳檔案的路徑是/api/file/upload, 則你可以通過uri /zuul/api/file/upload來呼叫介面上傳檔案

資料庫xml配置檔案無法輸入&導致中文亂碼的解決方案

我在進行c3p0資料庫連線池配置的時候,由於資料庫採用主從庫的設計(一個負責讀,一個負責寫),所以我這裡就需要兩個配置項,但是寫兩個properties又顯得很多餘,於是就採用了xml配置,通過<named-config name="xxx">來區分

Zabbix 改中文後亂碼解決辦法

zabbix 亂碼解決方法:將windows中的字體,替換zabbix PHP 中的字體。1. 打開 windows 控制面板——》字體——》如選擇 “黑體”——》上傳到Linux中fonts目錄下(rz命令)2. 將名字改為小寫 “simhei.ttf”3. 原字體文件備份mv /var/www/html/

PHP 獲取JSON json_decode返回NULL解決辦法

單引號 .com 獲取json 原來 json數據 頁面 替換 解決辦法如下 對象 在用json_decode對JSON格式的字符串進行解碼時竟然為空,頁面空白啊,整半天檢查這裏檢查那裏,問同事都沒用。 今天必應搜索了下,問題解決了,原來是有BOM頭輸出,大蝦的解決辦法如下

resin後臺輸出中文亂碼的解決辦法

中文 Coding https -o 出現 blog XML bsp sam resin後臺輸出中文亂碼的解決辦法! 學習了:https://blog.csdn.net/kobeguang/article/details/34116429 編輯conf/resin.con

字段更改造成ogg進程停止解決辦法

kafka ogg 收到開發人員的變更郵件申請,需要在某個表增加字段,由於我們的環境DDL是沒有開啟的。用的消息中間件Kafka做傳輸消費,應用到目標庫。由於緊急變更,先做字段變更吧。 變更完成後,查看ogg狀態;[oracle@bapdb1 ggs12]$ ./ggsci Oracle Golden

SpringBoot JPA MySQL 遇到中文亂碼的解決辦法

轉載於:https://blog.csdn.net/sanpic/article/details/79344562 在SpringBoot JPA中使用MySQL時, 資料庫的值為中文亂碼, 需要如下兩個方面的設定,  1. 資料庫的編碼為UTF-8, 或者GB2312 也可以.

Azure .net WebAPP的js/css檔案過大導致訪問慢的解決辦法

https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-qa-js-or-css-file-too-large-cause-slower-access  &nbs

win10下使用vscode除錯python輸出中文亂碼的解決辦法

  今天在vscode中除錯一個python指令碼時發現中文亂碼了,折騰了好一會兒才找到原因,記錄一下。   很簡單的一句程式碼測試一下:   # -*- coding: utf-8 -*-   print('亂碼不?')    檔案編碼設定的也是utf-8,但是除錯就是亂碼,網上