首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android HTTP POST 登入回傳字串前綴不明字元:PHP 輸出前有多餘輸出 (BOM/空白/錯誤訊息)

     編輯:程式設計綜合問答

現象

  • PHP 回傳 `echo "success";`
  • Android 端讀取輸入流轉字串,結果為 **`.success`** (前綴一個點/不可見字元)。
  • 複製該字串發現隱藏字元 (可能為 UTF-8 BOM `EF BB BF` 或空白/換行)。

根本原因

**PHP 腳本在 `` 後有多餘輸出**:

  • 檔案儲存為 **UTF-8 with BOM** (Notepad 預設)。
  • `
  • 錯誤/警告訊息輸出至標準輸出 (未關閉 `display_errors`)。

解決方法

  1. 儲存為 UTF-8 無 BOM:VS Code / Notepad++ / PhpStorm → Encoding → UTF-8 (without BOM)。
  2. 純 PHP 檔案省略結束標籤 `?>`** (官方推薦),避免尾部換行被輸出。
  3. 入口檔案最開頭 `
  4. 關閉錯誤顯示** (生產環境):
    ini_set('display_errors', 0); error_reporting(E_ALL);
  5. 輸出前清空緩衝區** (應急):
    ob_clean(); echo "success";

Android 端防禦性處理

String response = new String(bytes, "UTF-8").trim(); // 移除首尾空白/不可見字元
if (response.equals("success")) { ... }

核心原則:**PHP 只輸出純資料 (JSON/純文字),任何診斷資訊走日誌系統,勿混入回應體。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved