Windows系統下,默認的字符集爲ANSI,該字符編碼方式在不一樣語言環境下采用不一樣的編碼方案,在中文系統下ANSI編碼是GBK。ANSI由ASCII擴展而來,ANSI下不管何種具體的編碼方案,其前128個編碼均爲固定ASCII字符,這128個字符爲英文環境下的大小寫字母、數字、經常使用符號與控制符。函數
Code(text) 返回文本字符串中第一個字符的數字代碼。測試
Char(number) 用於返回對應於數字代碼的字符。編碼
返回的代碼或字符對應於計算機當前使用的字符集(ANSI),在中文環境下便是GBK字符集。這兩個函數在ANSI字符集下是能夠互相轉換的,可是當遇到Unicode字符時就會出現問題。spa
兩個函數的實際意義通常是用做輔助字符串處理,具體啥用處呢?code
曾經在QQ上見網友@六號(355832828)@1661907132討論QQ表情字符是如何被QQ識別的,對此博主進行了分析與解惑。blog
問題是這樣的:字符串
手機QQ複製一個表情,粘貼到別處,你會發現它是「/羊駝」,可是在QQ輸入框裏敲進「/羊駝」,發現它並不能被QQ識別,發出去的是輸入的文字「/羊駝」。字符串處理
博主認爲QQ表情的真實值「/羊駝」(複製的)中應該是有不可見的控制字符的,而這個字符應該是在字符串的首位。字符編碼
因此手機上用Excel 的Code函數試驗了一下,發現它是一個ASCII值爲20的控制符,具體是什麼字符能夠本身去翻ASCII碼錶。在Excel中用=CHAR(20)&"/羊駝"拼出一個字符串,複製一下在QQ粘貼即是羊駝的表情了。擴展
題外話:
受這個故事的啓發,博主對在處理ArcGis標註時字符前的空格會被標註引擎「吃掉」這件事有了這樣一個想法——是否能夠在標註字符前加入不可見控制符,避免空格被「吃掉」?試驗結果是不能夠,由於控制字符會顯示爲「口」。那麼,中文下的空格會不會被吃掉呢?測試可行,VBS下表示中文空格用chr(41377)。
Case1
若是在Excel中進行了硬換行,先要刪除換行符,除了替換框用小鍵盤Alt+10鍵入進行替換外,還能夠使用=SUBSTITUTE(A3,CHAR(10),"")進行函數處理,這裏Char(10)便輔助輸入了回車符。
Case2
使用Excel 的SUBSTITUTE函數進行替換操做時,被替換(第2參)與替換爲(第3參)的字符串須要使用英文的雙引號("")包裹,若是這兩個參數就是引號呢?使用Char(34)輔助輸入有沒有很爽快?
Asc(text) 對於雙字節字符集 (DBCS) 語言(中文就是),該函數將全角(雙字節)字符轉換成半角(單字節)字符。
實際用處呢就是以下圖,有時候一些摸不着頭腦的隊友錄入數據時使用了全角竟不自知,對於他們的數據能夠使用asc拯救一下。