標籤: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的用法)