寫代碼中遇到的問題(php接收不到傳過來的json資料,php使用utf8的用法)

來源:互聯網
上載者:User

標籤:tar   tail   中文編碼   code   檔案   內容   ace   全域變數   ica   

    今天寫代碼用python處理完資料,傳給php伺服器後,發現接收不到資料,因為是跨域,所以加了訊息頭:header(‘Access-Control-Allow-Origin:*‘);但是並沒有什麼卵用,後來不停地百度,東拼西湊終於找到瞭解決方案。

方案如下:

    1。傳過來的資料要加header頭:headers = {‘Content-Type‘: ‘application/json‘}

    2。PHP接收資料時要用:$GLOBALS[‘HTTP_RAW_POST_DATA‘]。

      原因如下:  $_POST:通過 HTTP POST 方法傳遞的變數組成的數組。是自動全域變數。  PHP預設只識別application/x-www.form-urlencoded標準的資料類型,也就是可以正常接受的post資料。

            如text/xml 或者 soap 或者 application/octet-stream 之類的內容無法解析,如果用$_POST數組來接收就會失敗!故保留原型,交給$GLOBALS[‘HTTP_RAW_POST_DATA‘] 來接收。

 

php接收到資料以後,上傳mysql後發現中文亂碼,在PHP中加入header("Content-type: text/html; charset=utf-8");mysql中設定字元集utf-8也無效,後來發現是pdo沒有設定中文編碼,加上以後,遂成功。

另附 

  utf-8的使用方法

 “UTF-8”是標準寫法,php在Windows下邊英文不區分大小寫,所以也可以寫成“utf-8”。“UTF-8”也可以把中間的“-”省略,寫成“UTF8”。一般程式都能識別,但也有例外(如下文),為了嚴格一點,最好用標準的大寫“UTF-8”。

在資料庫中只能使用“utf8”(MySQL) 在mysql的命令模式中只能使用“utf8”,不能使用“utf-8”,也就是說在PHP程式中只能使用“set names utf8(不加小橫杠)”,如果你加了“-”此行命令將不會生效,但是在php中header時卻要加上“-”,因為IE不認識沒杠的“utf8”,原因見下文。

 

PHP中的header:

 <?php header(‘Content-Type: text/html; charset=UTF-8‘); ?> //奇怪了:Content-Tyep用冒號,Chatset卻是等號。
靜態檔案使用:
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
總結:【只有在MySQL中可以使用“utf-8”的別名“utf8”,但是在其他地方一律使用大寫“UTF-8”。】

 

 

寫代碼中遇到的問題(php接收不到傳過來的json資料,php使用utf8的用法)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.