いつもご覧いただき、ありがとうございます。
この間Oracleの文字コードでひょんな事を耳にしましたので、少々書いてみます。
題にも書きましたが、Oracle11gでは日本語1文字が3バイトになっているようです。
このことは、次のサイトに記載されていました。
SHIFT The Oracleマルチバイト
文字コードの規定値がUTF-8になったことによるようなんですが、筆者の理解ではUTF-8では日本語文字コードは2バイトだと思い込んでいましたが、UTF-8では日本語コードは3バイトなんですね。
UTF-8-Wikipedia
UTF-8が運用されはじめて久しいのに、恥ずかしい限りです。
ということで、UTF-8下で運用する場合、文字数で数えるVARCHAR,VARCHAR2は問題ないようですが、CHARはバイト数カウントするので注意が必要です。
これらはシステム設計の根幹に影響するので、日本語が2バイト系の文字コードに変更したほうが良いと思います。
次のサイトに文字コードの変更方法について記載されていました。
oracle 11g XE でキャラクタセットを変更した時のメモ - おかぼんの備忘録的日記
UTF-8はキャラクターセットが多いので導入したいところですが、少々考えないといけないことがあるようです。
それでは。
2013/10/18
CHARは文字数
返信削除VARCHAR2がバイトです。
ごめんなさい。間違いを書いてしまいました。
返信削除Oracleの固定長文字列型「CHAR」ですが、サイズ指定にはバイトと文字数の両方が使えるんですね。しらんかった。