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 嗶,當作一個整體來處理, 所以就變成一個數代表一個字。其實,
首碼 * 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];還是會顯示「我好喜歡 Matlab」字串。
char(snum)
習題