// ❌ 錯誤:getText() 回傳 Editable,直接 getBytes 轉碼會破壞字元
String s = editText.getText().toString(); // 正確但常被誤寫
String bad = new String(editText.getText().toString().getBytes("ISO-8859-1"), "UTF-8"); // 錯誤示範
// ✅ 方式 1:標準 toString()
String text = editText.getText().toString();
// ✅ 方式 2:字串串接隱式呼叫 toString()
String text = editText.getText() + "";
EditText.getText() 回傳 Editable(實作 CharSequence),內部以 UTF-16 儲存 Unicode 字元。toString() 直接產生 Java String(同樣 UTF-16),不涉及位元組編碼轉換,故無亂碼問題。byte[] 傳輸/儲存時,才需指定 StandardCharsets.UTF_8:byte[] bytes = text.getBytes(StandardCharsets.UTF_8);❌ 「中文要用 ISO-8859-1 轉 UTF-8」 → 這是舊版 Servlet
request.getParameter()時代的殘留技巧,現代框架(Spring MVC、Retrofit、OkHttp)皆自動處理編碼。
❌ 「EditText 內容是 bytes」 → 錯誤,它是字元序列。
// 除錯:檢查字元碼點
String s = editText.getText().toString();
for (int i = 0; i < s.length(); i++) {
int cp = s.codePointAt(i);
Log.d("DEBUG", "char[" + i + "] = U+" + Integer.toHexString(cp).toUpperCase());
}
若碼點正常但顯示異常,請檢查 字型是否支援該文字(如缺少中文字型會顯示 □/豆腐塊)。