Main Content

Unicode と ASCII の値

MATLAB® は、あらゆる文字が数値コード値によって表される UTF-16 エンコードを使用して、すべての文字を Unicode® 文字として保存します(Unicode には最初の 128 個の記号として ASCII 文字セットが組み込まれているため、ASCII 文字は Unicode と ASCII で同じ数値コードをもちます)。文字配列と string 配列の両方でこのエンコードが使用されます。さまざまな数値変換関数を使用することにより、文字をその数値コード値に変換できます。関数 char を使用すると、数値を文字に変換できます。

文字の数値コード値への変換

文字を、その Unicode コード値を表す整数に変換できます。単一の文字または文字配列を変換するには、次のいずれかの関数を使用します。

  • double

  • uint16uint32 または uint64

ベスト プラクティスは、関数 double を使用することです。ただし、数値を整数として保存する必要がある場合は、少なくとも 16 ビットをもつ符号なし整数を使用します。これは、MATLAB が UTF-16 エンコードを使用するからです。

関数 double を使用して、文字ベクトルを Unicode コード値に変換します。

C = 'MATLAB'
C = 
'MATLAB'
unicodeValues = double(C)
unicodeValues = 1×6

    77    65    84    76    65    66

string 配列内の文字を Unicode コード値に直接変換することはできません。特に、関数 double は、関数 str2double と同様に、string をそれが表す数値に変換します。double は、string を数値に変換できない場合、NaN 値を返します。

str = "MATLAB";
double(str)
ans = NaN

string 内の文字を変換するには、まず string を文字ベクトルに変換するか、中かっこを使用して文字を抽出します。次に、double のような関数を使用して文字を変換します。

C = char(str);
unicodeValues = double(C)
unicodeValues = 1×6

    77    65    84    76    65    66

数値コード値の文字への変換

関数 char を使用すると、Unicode 値を文字に変換できます。

D = [77 65 84 76 65 66]
D = 1×6

    77    65    84    76    65    66

C = char(D)
C = 
'MATLAB'

char の典型的な用途は、入力できない文字を作成して string に追加することです。たとえば、度記号の文字を作成し、それを string に追加します。度記号の Unicode コード値は 176 です。

deg = char(176)
deg = 
'°'
myLabel = append("Current temperature is 21",deg,"C")
myLabel = 
"Current temperature is 21°C"

文字とコード値の間のマッピングを含む Unicode の詳細については、Unicode を参照してください。

参考

| | | | | | | | | | |

関連するトピック

外部の Web サイト