文字コードについての簡単なまとめ

char バックエンド
記事内に広告が含まれています。

UTF-8の場合、一文字を1~4バイトとして通常は認識する。日本語は大体3バイト。

しかし、結合文字(㋿、👨‍👨‍👦‍👦など)や第三、四水準漢字(伃、丩などの常用漢字でないもの)は複数の文字で構成されているので、4バイトとなる。

上記のような、複数の文字(コードポイント:文字コードのようなもの)で構成されている文字をサロゲートペアという。

UTF-8ではサロゲートペアが考慮されていないので、バラバラに表示される事がある。

しかし、UTF-16ではサロゲートペアが考慮されているため、問題がないことが多い。

文字のデータ型について

結構よく使うけれど、ついつい忘れがちなのが

char、varchar、nchar、nvarcharの取り扱い方の違い。

すごく簡単に説明すると

  • char→文字数固定。全角非推奨。
  • varchar→文字数可変(最大の文字数は固定)。全角非推奨。
  • nchar→文字数固定。全角半角関係なし。
  • nvarchar→文字数可変(最大の文字数は固定)。全角半角関係なし。

由来について

意外と説明されていないことが多い由来についてです。

nとはNational(固有の)

varとはvariable(可変の)

char(文字)はそのままですね。

なので、さっきのを日本語訳してみましょう。

  • char→文字
  • varchar→可変の文字
  • nchar→固有の文字
  • nvarchar→固有で可変の文字

なんだか意味が一気に覚えられるような気がしませんか?

日本語はかなり難しく、漢字は絵文字と同じようなバイトの計算方法なのでかなりエラーが起きるときがあります。

バイト数でチェックしていると、たまに罠に落ちることがありますので、気をつけましょう。

簡単なことを言うと、基本nvarcharを使用しておけば問題ないです!(そんなことないです。)

タイトルとURLをコピーしました