Matlab 教材:中文字串

Matlab 能夠處理 multi-byte 字碼,也就是每個字兩碼 (如 Big-5) 或每個字三碼甚至四碼的字集。 但是這跟作業系統有關,所以這一小節的說明,不一定在任何版本、任何系統中都正確。 不過,基本原則應該差不多。

假設 Matlab 所執行的作業系統支援 Big-5 中文字碼, 則用戶可以在 Matlab 工作環境內直接輸入中文字串。例如

s = '我好喜歡 Matlab'
這是可以的,而且 ischar(s) 也得到正確的回應 True。

但是當您說 double(s) 卻得到

42970 42606 46047 50551 32 77 97 116 108 97 98
很明顯地,後面 5 個數是空格和 Matlab 的 ASCII 碼, 而四個中國字每個字對應一個數。 這是因為 Matlab 認得 Big-5 碼, 他自動把 Big-5 的首碼和次碼、共 16 嗶,當作一個整體來處理, 所以就變成一個數代表一個字。其實, Matlab 只是把 Big-5 的兩個碼,也就是兩個字元,合併成一個整數, 相當於
首碼 * 256 + 次碼
例如「我」就變成
167 * 256 + 218 = 42970

但是我們如果直接輸入正確的 Big-5 碼之兩個字元, 還是可以讓 Matlab 以 char( ) 函式印出中文。例如

char( [164 64] )
就印出第一個常用中國字: 。而
char( 164:169 )
則印出三個中國字「丰戍貝」, 它們的字碼依序是 (164,165) (166,167) (168,169)。 讀者可以在 Big-5 的合法範圍內,作一些測試。

接續前面那個例子,如果說

snum = [167 218 166 110 179 223 197 119 32 77 97 116 108 97 98];
char(snum)
還是會顯示「我好喜歡 Matlab」字串。

習題

  1. 請找到 37 個注音符號的 Big-5 碼。
單維彰 (2001/10/31) --- 04/01/02 (單) [Prev] [Next] [Up]