若要檢查產生的 ANSI 色彩代碼結果,請在瀏覽器中檢視可見的轉義表示、複製原始 ESC 控制位元,然後貼到真正的終端機環境中,以確認前景、背景、樣式與重設行為。檢查分為三個層次:參數檢視(輸出了哪些 SGR 編號)、結構檢視(序列是否以 ESC[ 開頭、以 m 結尾,並附加 ESC[0m),以及行為檢視(目的終端機是否以你程式碼預期的方式呈現文字)。瀏覽器頁面本身刻意不顯示樣式預覽,因為虛假的預覽會暗示存在一套通用的終端機調色盤。相反地,產生器在可見面板中將跳脫位元寫成 \x1b,讓你能閱讀整個序列而不會改變瀏覽器本身的外觀,而「複製」按鈕會交給你原始的控制位元以供可信的目的地使用。可見檢視與原始輸出之間的這種區隔,正是讓驗證步驟可靠的關鍵,也是ANSI 色彩代碼產生器旁所描述之各項檢查的基礎。

「檢查結果」對 SGR 序列而言的意義
產生的 Select Graphic Rendition (SGR) 序列是一小串控制位元,而非樣式化文字。它以跳脫字元 (0x1B) 開頭,後接一個左中括號、以分號分隔的十進位參數,以及字母 m。接著是你的文字,然後是 ESC[0m 的重設。因此驗證結果代表確認四件事:參數編碼了你選擇的樣式與色彩、位元的框架正確、文字與你輸入的內容完全一致,以及附加的重設會在正確的位置結束樣式。ECMA-48 定義了 SGR 格式,而 xterm 文件 則交叉驗證了廣泛實作的亮色對應。檢查與頁面看起來多色彩無關,因為瀏覽器並非該串流的消費者;終端機、日誌檢視器或測試工具才是。將串流視為資料而非顯示,正是讓驗證保持誠實的關鍵。
你正在驗證的 16 個 SGR 色彩位置
產生器中的每個色彩選擇都對應到一個特定的 SGR 編號。當你檢查結果時,請將可見的轉義檢視中的編號與你預期的位置進行比對。基本前景代碼為 30 到 37,背景為 40 到 47,依序為黑、紅、綠、黃、藍、洋紅、青、白。常見的 xterm 相容亮色延伸則使用前景 90 到 97 及背景 100 到 107。
| 位置 | 前景 | 背景 | 名稱 |
|---|---|---|---|
| 1 | 30 | 40 | 黑色 |
| 2 | 31 | 41 | 紅色 |
| 3 | 32 | 42 | 綠色 |
| 4 | 33 | 43 | 黃色 |
| 5 | 34 | 44 | 藍色 |
| 6 | 35 | 45 | 洋紅 |
| 7 | 36 | 46 | 青色 |
| 8 | 37 | 47 | 白色 |
| 9 | 90 | 100 | 亮黑色 |
| 10 | 91 | 101 | 亮紅色 |
| 11 | 92 | 102 | 亮綠色 |
| 12 | 93 | 103 | 亮黃色 |
| 13 | 94 | 104 | 亮藍色 |
| 14 | 95 | 105 | 亮洋紅 |
| 15 | 96 | 106 | 亮青色 |
| 16 | 97 | 107 | 亮白色 |
色彩名稱描述的是調色盤位置,而非保證的 RGB 值。終端機模擬器、主題、使用者設定、無障礙選項、多工器、遠端環境與應用程式都可能重新對應這些位置。當你在新環境中檢查結果時,請勿假設相同名稱會產生相同色相;若需要精準,請透過實際呈現與閱讀主題來驗證。
驗證產生的 ANSI 序列
- 開啟 ANSI 色彩代碼產生器,並在輸入欄位中輸入你想測試的文字。
- 從可搜尋的 16 位置參考表中選擇一個可選的前景色彩(基本代碼 30–37,亮色 90–97)。
- 從相同的參考表中選擇一個可選的背景色彩(基本代碼 40–47,亮色 100–107)。
- 僅在需要時切換粗體(參數 1)或底線(參數 4);介面會顯示這兩種樣式,並拒絕不支援的色彩與樣式編號。
- 點擊產生並閱讀可見的轉義表示:跳脫位元會以 \x1b 顯示,參數依序列出,你的文字會直接顯示,ESC[0m 則會關閉序列。
- 將可見的參數與你預期的表格進行比對;例如,亮紅色前景搭配藍色背景、粗體與底線,應顯示為 1;4;91;44。
- 使用「複製」按鈕複製原始控制位元(而非反斜線、x、1、b 這四個字元)到字串字面值、測試固定資料、原始檔案或支援終端機的工具中。
- 貼到可信的目的地,例如本機終端機提示、會解譯 SGR 的除錯主控台,或測試工具,然後視覺確認呈現結果,並確認接下來的一行能回到預設樣式。
閱讀可見的轉義表示
可見面板刻意將跳脫位元顯示為四個字元 \x1b,而非字面上的控制字元。這種標記法讓你能在瀏覽器分頁中從頭到尾閱讀整個串流,而不會讓頁面本身獲得背景色彩或失去自身樣式。當你檢視此檢視時,請從左到右逐步查看參數清單,確認順序符合你的意圖。只要產生了前綴,重設就會附加上去,因此在可見檢視中缺少 ESC[0m 是產生之前某處出錯的訊號。如果你看到多餘或重複的分號、不支援的編號,或多餘的右中括號,請重新產生序列;該工具會拒絕不支援的色彩與樣式編號,因此乾淨的可見檢視就是參數為有效 SGR 的第一項證據。請將可見面板視為檢視介面,而非目的地;你在那裡讀到的位元刻意設計成不可執行,僅供人眼稽核使用。
驗證重設行為與支援終端機的輸出
附加的 ESC[0m 重設是一道防護欄,而非證明。它的作用是告訴消費者「此點之後不再有樣式」,但每個消費者對串流的解讀都略有不同。若要驗證重設行為,請將原始序列貼到真正的終端機提示中,並立即輸入或貼上一行普通文字。若該普通文字顯示為無樣式,則表示在該環境中重設生效。若你將同一序列導入檔案並以 cat 檢視,你會看到控制位元而非樣式化文字,這本身就是有用的證據:串流中包含真正的跳脫字元,而不是四個可見字元。請在你發佈的每個環境中執行相同的檢查。本機終端機、CI 日誌檢視器、多工器窗格與遠端 SSH 工作階段,可能會以不同的調色盤呈現相同的位元,在輸出被重新導向時完全不顯示色彩,或遵循 NO_COLOR 規範。重設在大多數情況下都能存活,但你的責任是在發佈這個驗證習慣到任何重要環節之前,確認它能在你的環境中存活。
影響你檢查的跨終端機注意事項
在某個終端機中成功檢查,並不保證在另一個中會有完全相同的呈現,因為 SGR 編號選擇的是調色盤位置,而非保證的 RGB 值。終端機模擬器、主題、使用者設定、無障礙選項、多工器、遠端環境與應用程式本身都可能重新對應這些位置。粗體可能代表亮度增加而非更粗的字體,某些較舊的終端機會用粗體來選擇亮色調色盤。底線的形狀與顏色也會因實作而異。這就是為什麼產生器不承諾固定的視覺色彩,也不在瀏覽器中繪製樣式預覽的原因。請將你的檢查視為確認「這個序列完整送達消費者」,而非「這個序列在任何地方看起來都完全相同」。八個外部固定資料鎖定了基本前景與背景配對,而測試強制執行 16 個唯一代碼列、一個亮色篩選結果,以及一個精確的多樣式原始與轉義序列;但這些測試是在瀏覽器中執行,而非在使用者的終端機中。若要可靠地使用,請產生最小必要的參數集、檢視可見表示、僅複製到可信的環境,並在使用者實際執行的真實終端機主題與輸出模式中驗證行為。
驗證時的日誌安全性
因為驗證通常涉及將控制位元貼到終端機,請謹慎決定這些位元最終的去向。原始的跳脫位元是控制資料。將它們貼到終端機命令列、日誌檔、議題追蹤器、聊天訊息或原始檔案中,可能會產生不可見的行為,而非可讀的字元。包含不受信任之控制字元的日誌可能會隱藏文字、偽造視覺行、建立誤導性的連結,或破壞終端機狀態。當你在除錯過程中檢查序列時,請先清理不受信任的資料再列印到互動式終端機,並提供一條純文字日誌路徑,將控制序列移除或明顯地轉義。可見面板中看到的 \x1b 標記法,就是轉義日誌路徑的良好範例。如需了解此工作流程的更多細節,請參閱在日誌中安全處理 SGR的指南。所有文字、選擇、產生的位元、搜尋詞彙與剪貼簿操作都保留在瀏覽器中,不會上傳或在 shell 中執行,但一旦複製出來,你就要為目的地以及讀回它的消費者負責。
瀏覽器無法告訴你關於檢查的事
此頁面沒有終端機模擬器,也無法判斷目的地是否支援 ECMA-48、xterm 延伸、Windows 虛擬終端機處理、NO_COLOR 慣例,或重新導向的非互動式輸出。ECMA-48 定義了 SGR 容器與基本呈現控制項,這代表你檢查中的結構部分是可攜的,但呈現部分則否。這就是為什麼產生器同時提供明顯的轉義表示與原始位元的原因:一種檢視適合在瀏覽器中閱讀,另一種適合餵給終端機,且兩者都不假裝是對方。當你完成檢查時,請保留三項產物:你輸入的內容、可見的 \x1b 檢視,以及來自真正終端機的螢幕擷圖或逐字稿。它們共同回答了「工具是否產生了我的要求」與「目的地是否遵循了我產生的內容」,而這就是你的關鍵字真正關心的完整迴圈。