Unicode不可見字元的顯示
阿新 • • 發佈:2019-01-01
Unicode的學名是”Universal Multiple-Octet Coded Character Set”,簡稱為UCS
- 不可見字元”/u200b”為 Unicode Character ‘ZERO WIDTH SPACE’ (U+200B),可用於內容標識,不佔位數。
echo $LANG可以顯示出Linux系統的編碼方式,一般預設為UTF-8。
在Linux終端中”/u200b”為不可見字元。為了顯示出內容中加入的不可見字元,可將內容儲存到文字中,利用less命令開啟文字。
less
less 與 more 類似,但使用 less 可以隨意前後瀏覽檔案,而 more 僅能向前移動,卻不能向後移動,而且 less 在檢視之前不會載入整個檔案。
eg:
在檢視日誌時
grep xxxxxx info.log |less
以less分頁顯示的形式檢視日誌, 用less開啟的日誌可以展示出不可見字元
less info.log |grep xxxxxx
開啟的日誌無法展示出不可見字元
java中列印unicode的例子
import static org.assertj.core.api.Assertions.assertThat; /** * Created by wenjia3 on 16/12/1. */ public class unicode { public static void main(String[] args){ String contentOri="test unicode"; String content1="\u200b" + contentOri + "\u200b" ; String content2="\u0021" + contentOri + "\u0021"; String str = ""; for (int i = 0; i < content1.length(); i++) { int ch = (int) content1.charAt(i); if (ch == '\u200b') str += content1.charAt(i) + "\\u" + Integer.toHexString(ch); else str += content1.charAt(i); } System.out.println(content1); System.out.println(content2); System.out.println(str); assertThat(content1).as("不含有/U200B字元").contains("\u200b"); } }
執行結果
test unicode
!test unicode!
\u200btest unicode\u200b
直接列印content1、content2,unicode字元會自動編譯成當前標準輸出的編碼。即\u200b為不可見字元,\u0021為“!”。
可以利用charAt()在程式中進行轉換,將字元的unicode值打印出來。