JSP/HTML 頁面中直接寫入 · (·) 或 Java 字串常值 "·",編譯或瀏覽器顯示為 ? 或亂碼。
pageEncoding 與 contentType charset。<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Special Char Test</title>
</head>
<body>
<%-- 直接寫入特殊字元 -->
中文 · English
<%-- 或 Java 程式碼產生 -->
<%
String dot = "·"; // 原始碼需以 UTF-8 儲存
out.print("Java 產生: " + dot);
%>
</body>
</html>
不依賴原始碼檔案編碼,直接使用 \uXXXX:
String middleDot = "\u00B7"; // · (MIDDLE DOT)
String bullet = "\u2022"; // • (BULLET)
out.print(middleDot);
常用特殊字元 Unicode 碼位:
| 字元 | 名稱 | Unicode | HTML 實體 |
|---|---|---|---|
| · | Middle Dot | U+00B7 | · |
| • | Bullet | U+2022 | • |
| × | Multiplication Sign | U+00D7 | × |
| ÷ | Division Sign | U+00F7 | ÷ |
| ℃ | Degree Celsius | U+2103 | ℃ |
// 假設已知字元在目標編碼中的碼點
char targetChar = (char) 0x00B7; // 或從資源檔讀取
String s = String.valueOf(targetChar);
javac -encoding UTF-8 或 Maven <encoding>UTF-8</encoding>。pageEncoding="UTF-8"、contentType="text/html; charset=UTF-8"。response.setCharacterEncoding("UTF-8")、response.setContentType("text/html; charset=UTF-8")。characterEncoding=utf8(MySQL)或 oracle.jdbc.defaultNChar=true(Oracle)。<meta charset="UTF-8">。特殊字元亂碼本質是編碼不一致。統一全鏈路採用 UTF-8,並善用 Unicode 逃逸序列 \uXXXX 寫死字元碼點,可徹底解決此類問題。現代專案強烈建議全端 UTF-8,避免 GBK/Big5 等legacy編碼。