在 JJS(Roblox 上的 Jujutsu Shenanigans)中,要讓角色名稱在用戶名、聊天室或顯示欄位中呈現隱形效果,是透過插入一個看起來空白的 Unicode 字元,而不是改變任何遊戲內的可見度選項。最常見的選項是零寬度的碼位,例如 U+200B(零寬度空格)、U+200C(零寬度不連字)、U+200D(零寬度連字)、U+2060(詞連字),以及 U+3164(韓文填充字元),再加上 U+00A0 的不換行空格。這些都不是真正空白的;它們是有效的 Unicode 碼位,在大多數字型中都沒有可見的字形。產出的文字會顯示為空白,根據 Roblox 文字層和 JJS 介面如何呈現該碼位,名稱可能會看起來沒有任何可見內容。由於確切的呈現方式取決於 Roblox 的文字處理方式、所使用的字型,以及遊戲套用的任何審核過濾器,最安全的作法是刻意挑選一個特定的碼位,從可信的本機來源複製它,然後在使用前進行驗證。隱形字元工具可在您的瀏覽器中提供這個工作流程,且無需上傳任何內容。

隱形 Unicode 字元究竟是什麼
「隱形字元」是一個 Unicode 碼位,其指派的字形為空白、零寬度,或在大多數字型中沒有視覺形式。在 Unicode 標準中,每個字元都有一個數值碼位和一個官方名稱;本工具涵蓋的字元都具有一個共同特性:典型呈現為不可列印或零寬度的位置。您可以對照官方的 Unicode 字元碼表 來確認任何一個,這是碼位和名稱的權威參考來源。
就 JJS 的情境而言,實際效果是:將單一這樣的碼位貼上到用戶名、顯示名稱或聊天訊息中,會表現為該位置是空的。這是一種呈現效果,而非碼位本身的屬性。Roblox 的文字堆疊、遊戲載入的字型、聊天呈現層,以及任何審核步驟,都可能對同一個碼位有不同的處理方式。有些平台會將這些字元標準化或去除;有些平台會保留它們並顯示為空白;有些則會顯示一個替代符號。沒有單一保證的結果,這就是為什麼複製一個特定的、已知的碼位,比從原始來源不明的隨機論壇文章複製一個「空白」更安全。
工具所處理的六個字元
隱形字元工具提供六個具名字元,不多也不少。每張卡片都會顯示其官方 Unicode 名稱和確切的碼位,單擊一次即可將該單一字元複製到您的剪貼簿。這個集合刻意設計得很小,讓您隨時清楚知道自己貼上的是什麼。
| 碼位 | 官方名稱 | 工具顯示的標籤 | 常見出現位置 |
|---|---|---|---|
| U+00A0 | NO-BREAK SPACE | NBSP | HTML ,從網頁複製貼上,版面配置間距 |
| U+200B | ZERO WIDTH SPACE | ZWSP | 斷字提示,論壇中最常被複製的「空白」 |
| U+200C | ZERO WIDTH NON-JOINER | ZWNJ | 阿拉伯文和波斯文的字形控制 |
| U+200D | ZERO WIDTH JOINER | ZWJ | 表情符號序列和印度系文字的字形控制 |
| U+2060 | WORD JOINER | WJ | 斷行控制,ZWNBSP 的替代字元 |
| U+3164 | HANGUL FILLER | HF | 韓文填充位置,常被當作「空白」字元流通 |
這六個字元就是本工具會偵測、複製、標示和移除的對象。除此之外的任何字元,包括 Unicode 標準中定義的此集合以外的其他零寬度或不可列印碼位,都不在檢查器和移除按鈕的處理範圍內。
如何使用 Unicode 在 JJS 中讓角色隱形
這是核心任務:產生一個包含真實 Unicode 字元(且沒有可見字形)的字串,使其在 JJS 中呈現為空白。請使用隱形字元工具作為來源,而不是來路不明的留言串片段。
- 挑選您要的碼位。如果您想要嚴格的零寬度字元且不產生間距效果,請從 U+200B(零寬度空格)或 U+3164(韓文填充字元)開始,這兩個是 JJS 風格顯示名稱中最常用的「空白」。如果您想要表現得更像空格而非連字,請選擇 U+00A0 或 U+2060。
- 點擊該卡片的「複製」按鈕。頁面上的每張卡片只會複製一個字元,即卡片上顯示的具名碼位。這會將單一已知的碼位放入您的剪貼簿,而不是一個來路不明的字串。
- 將它放到 JJS 預期的文字位置。將該字元貼到 Roblox 顯示名稱欄位、聊天訊息或任何接受 Unicode 的文字輸入欄。Roblox 客戶端會決定如何呈現該位置;您提交的是一個已知的碼位,而不是未知的碼位。
- 在使用前先進行測試。在隱形字元前後輸入一段簡短的可見字串,例如「A[ZWSP]B」,並在預覽或聊天預覽中確認呈現結果符合您的預期。如果 Roblox 移除了該字元或顯示替代符號,請從這六個中挑選另一個碼位並重複測試。
- 僅將本工具用於合法的顯示用途。請勿使用看似空白的字元來隱瞞身分、規避審核、冒充其他玩家或繞過命名規則。本工具不會驗證目的地的規則;這個判斷由您自行負責。
顯示貼上字串中隱藏的字元
有時候從 JJS 端反過來看:您從某處複製的字串看起來是空白的,但它實際上包含了這些字元之一,您需要在進行任何處理之前確切知道是哪一個。同一個工具的檢查器功能可以處理這種情況。
將任何文字貼到檢查器中,它會使用 Array.from 掃描輸入內容,該方法依 Unicode 碼位進行迭代,而不是分割代理對。這個細節很重要,因為表情符號和許多輔助字元佔用兩個 UTF-16 單位;依碼位進行迭代可讓回報的位置與使用者看到的內容對齊,即使貼上的字串包含表情符號或組合記號也一樣。檢查器僅檢查頁面上列出的六個字元。它並未聲稱能偵測到所有看起來空白的 Unicode 字元,這個範圍是明確的。
當檢查器找到一個列出的字元時,「顯示結果」文字方塊會將其替換為可讀的標記:[ZWSP]、[NBSP]、[ZWNJ]、[ZWJ]、[WJ] 或 [HF]。隨附的表格會以 Unicode 碼位的一起始位置及其本身的碼位(標準的 U+XXXX 格式)來標示每個偵測結果。這讓您可以比較兩個看起來相同的字串、找出顯示名稱中多餘的連字,或了解為何文字貼到 JJS 和一般編輯器中的表現會不同。
僅移除列出的六個字元
當「顯示結果」字串中出現您不想要的內容時,「移除列出的字元」按鈕可為您提供清理後的版本。該移除的範圍是固定的:它僅過濾頁面上確切列出的六個碼位,並保留普通空格、Tab 鍵、換行、標點符號、字母、表情符號,以及所有其他 Unicode 字元。實作方式是對這些確切碼位進行直接過濾;它不會對輸入中的其他內容進行標準化、合併或修改。
這個狹窄的範圍很重要,必須明確說明:並非每個不可列印字元都是錯誤。零寬度不連字或零寬度連字在阿拉伯文、波斯文或印度系文字中可能帶有實際的字形資訊;不換行空格可能是刻意的排版選擇;詞連字可以防止詞彙在跨行時被拆開。在從名稱、程式碼、地址、引文內容或您不閱讀的語言文字中移除任何內容之前,請檢視「顯示結果」版本並確認這六個字元中沒有任何一個正在執行刻意的功能。在您選擇執行動作之前,原始輸入會保持不變,因此您隨時可以複製標籤或再次編輯輸入,而不會遺失起始文字。
本工具不涵蓋的範圍
範圍就是這六個字元以及上述操作。它不會偵測或移除其他零寬度碼位,例如 U+FEFF(零寬度不換行空格)、U+200E 和 U+200F(由左至右和由右至左標記)、U+202A 至 U+202E(方向格式化),或 U+2066 至 U+2069(隔離控制)。它不會偵測軟連字、蒙古文母音分隔符、間註解字元,或 Unicode 標準定義的任何其他不可列印碼位。如果您需要其他字元,請使用官方的 Unicode 字元碼表或 Unicode 標準附錄 14 中的斷行規則作為參考,然後從可信的來源複製您所需的確切碼位。
呈現方式也並非行為的保證。一個字元在一種字型中可能顯示為空白,在另一種字型中可能顯示替代字形,可能被 Roblox 移除,可能被文字編輯器標準化,或在不同平台上具有不同的斷行和輔助使用效果。隱形字元也可能影響搜尋、複製貼上、識別碼、審核和螢幕閱讀器的發音。對於任何重要的更改,請在目的應用程式中並與相關對象一起測試複製的字元。
貼到 JJS 之前的實用工作流程
一個安全的例行程序很短且一致。僅在目的地的文件實際允許時,才從頁面上挑選一個具名字元。先將複製的碼位貼到測試欄位,例如備忘錄應用程式、Roblox 聊天預覽或任何預覽介面,以確認呈現結果。使用同一個工具檢查最終的可見字串,確認沒有意外混入的碼位。然後將清理或整理後的結果貼回來源應用程式。如果您正在處理的字串不是您自己撰寫的,請先將它貼到檢查器中,閱讀標記標籤和碼位,判斷這六個字元中是否有任何一個正在執行您想保留的功能,然後再移除您不想要的部分。
如果系統需要可見的分隔符號,請優先使用普通的可見字元,而不是看似空白的字元。如果在這六個中進行選擇,韓文填充字元(U+3164)和零寬度空格(U+200B)是 JJS 風格顯示名稱最常見的起點,但唯一重要的答案,是您的目的地能以您預期的方式呈現的那一個。若想更廣泛地了解隱形字元在文字格式化情境中的行為,指南 如何取得用於文字格式化的隱形字元 從不同角度介紹了同一個工具,可能有助於您比較各種選擇。
如需更深入的了解,請參閱 如何使用 Unicode 在 LaTeX 中取得斜體文字。