首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 中 UTF-8 轉 GB2312 編碼實作指南

     編輯:Java 相關知識

為什麼需要編碼轉換?

在基於 HTTP 協議的 JSP 或 Servlet 應用中,JVM 預設會將傳輸的資料編碼為 UTF-8 格式。若直接從 HTTP 流中提取中文資料,往往會得到亂碼(如「????」)。為了正確解析中文字符,必須將 UTF-8 轉換為 GB2312 編碼。

核心轉換邏輯

利用 ISO-8859-1 作為中介編碼,可輕鬆實現轉換。以下代碼示範了標準做法:

byte[] b;
String utf8_value;

utf8_value = request.getParameter("NAME"); // 從 HTTP 流取得 UTF-8 資料
b = utf8_value.getBytes("8859_1");         // 以 ISO-8859-1 為中介
String name = new String(b, "GB2312");     // 轉換為 GB2312 字符

輸入流轉位元組陣列的安全讀取模式

雖然 InputStream.read(byte[] b, int off, int len) 允許一次讀取指定長度,但在網路環境下資料傳輸可能斷續,無法保證一次讀完所有資料(尤其大數據量時)。因此必須採用循環讀取,並檢查實際讀取的位元組數:

int totalRead = 0;
while (totalRead < expectedLength) {
    int read = inputStream.read(buffer, totalRead, expectedLength - totalRead);
    if (read == -1) break; // 流結束
    totalRead += read;
}

這樣才能確保資料完整性,避免因網路波動導致讀取不全。

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