1. 程式人生 > >Unicode不可見字元的顯示

Unicode不可見字元的顯示

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值打印出來。