Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

RDBの文字コード

unicodeが一般化して、デフォルトの文字コードがUTF8で構築する機会も増えています。
一方、Webやモバイルでは、未だ制約がありSJISをデフォルトとするケースもあります。
業務系RDBでは過去を引きずることか多いので非ユニコードのケースも多々見受けられます。

前回にかいたのですが、バイトと、文字コードによる1文字の占有バイト数の関係は、なかなか周知が難しく、プロジェクトの度に説明を要します。
愚痴はさておき、RDBのデフォルト文字コードを UTF8にするのは、「勿体ないのでけは」「もったいないだけでは」と思うようになりました。

 ユニコードを必然とする項目ってどれくらいあるのだろう。
ありがちな業務系アプリの場合、氏名、住所が該当しますが、それって、アプリDBの全項目の極一部の項目です。
(*)アプリによったら、文書データや書類データだったりしますが、それは例外的なシステムでしょう。
英数字項目が多いのではと思います。商品名項目なども、SJISで間に合うケースも多いでしょう。
RDB全体をUTF8で定義すると、アルファベットは1byteの筈なんですが、 データ長の事前チェックは、無条件に1文字:3byteで算出するようで、どうも変。
SJISなら2byteで済むのに3byte占有されるのも冗長感がします。
データ量が数百万件を超えるデータを扱うと大きな差になります。
charと ncharを使い分けが可能だったり、項目単位に採用する文字コートを設定できるRDBがあります。
というわけて、最近私は、デフォルト文字セットは、 SJISにして置いて、ユニコードが必要な項目のみ UTF8を指定するようにしています。
消極的妥協点ではありますが、そのことでデメリットを感じないので、まぁいいかな。

 

投稿日時 : 2011年7月18日 0:35

Feedback

# re: RDBの文字コード 2011/07/19 12:40 スルーしたものの、戻ってきた

「勿体ないだけでは」

だと思う。たぶん。

# re: RDBの文字コード 2011/07/19 23:57 ognac

>だと思う。たぶん。
I think so
ありがとう。

# re: RDBの文字コード 2011/07/20 20:22 中博俊

UTF-8ではなくUTF-16にするべきでしょう。UTF-8なんて存在する価値はないです。

いわゆるcharの範囲しか利用しないのであればSJIS=UTF-8ですから、そのような使い分けは意味は無いでしょう。

データ長の事前チェックが入力される文字種で、文字数であるかを検知するようにするのがいいと思います。

# re: RDBの文字コード 2011/07/20 21:53 ognac

UTF8って結構はびこっていたりしますね。
文字コードで悩みこむのは、本筋ではない希ガス。

# re: RDBの文字コード 2011/07/20 22:21 Pasie.

 そもそも1Byte=8bitって8bitプロセッサ時代のものだし、いまや64bit時代!ってことで、8バイト1セットでもいいのでは?とか暴論を吐いてみるテスト(ぉ
 サロゲートペアとか考えるとUTF16ってのもなあ、って気がする。UTF-24とかつくんない?だめ?(ぉ
 もっともそれをしても合字問題はまた別の話ですしね。表現が増えて喜ぶべきなのか、そうでないのか… まあでもたぶん前者。

# re: RDBの文字コード 2011/07/20 22:28 Pasie.

ぬお。コメントが消えた(汗

# re: RDBの文字コード 2011/07/20 22:29 Pasie.

 コメント復活した。なんだったんだろう…

# re: RDBの文字コード 2011/07/21 0:42 ognac

合字問題まで及ぶと、考えたくない...本音
実業務では、SJIS+ アルファですものね。
そのわずかなアルファが UTF8/UTF16で表現可能ならそれでいい....消極的ですがね。

そのむかし、東芝が 1byte=12bit マシンを作っていました・
http://www.denshiblock.co.jp/micom1.html

これだけ、複雑にして(各種コード体系)メリットがあるのでしょうかね。

# re: RDBの文字コード 2011/07/21 21:25 Pasie.

>合字問題まで及ぶと、考えたくない...本音
 MSX時代は合字は夢だったんですが。いまとなっては以下略(笑

>実業務では、SJIS+ アルファですものね。
 Shiftjis2004という選択肢もあったはずなんですけどね…
 http://charset.uic.jp/show/shiftjis2004/

>そのむかし、東芝が 1byte=12bit マシンを作っていました・
 なるほど。ビット拡張ってのも手ですね。では次のCPUは96bitマシンにして、1Byte=12bitで。そうするとほぼUCS4が2バイトに!(ぉひ

>これだけ、複雑にして
 いや、単純にしようとした結果だと思いますよ?(泣

# re: RDBの文字コード 2011/07/22 0:13 ognac

>Shiftjis2004という選択肢
国内仕様限定という壁かな。
ガラパコス仕様になっていたかどうかは、わかりませんが、スッキリ感はありますね。

「ガラパコス携帯」を名乗っているSofbank_Androidは
挑発的なネーミングなのかな。

# re: RDBの文字コード 2011/07/30 9:35 甕星

>>これだけ、複雑にして
> いや、単純にしようとした結果だと思いますよ?(泣

文字コードの国際化が大変だから単純にしよう。
32bit固定に拡張すれば全世界の文字を格納できるし単純でいんじゃね?俺天才。

それだと異体字とかどうすんの?
同じ字でも時代と国によって字形が違ったりするんだけど?

(やべ、そんなのあるのかよ考えてなかった)
そ・・・それはコードページで切り替える事で・・・

そもそも中国語だけで32bit使いきるんじゃね?

(やべ、そんなにあるのかよ考えてなかった)
そ・・・それはサロゲートペアという機能を使ってですね・・・

AとÅとか合字で表現したいんだけど・・・
(もう好きにしてくれ・・・単純にしたかったのに)
あ、もう、なんでもドンドン取り入れますよ。
(なんで1文字128bitにしなかったんだろう。そしたら俺天才だったのに)

#こんな感じ?

# re: RDBの文字コード 2011/07/30 21:11 ognac

言い得て妙ですね。
慎重に考えても、行き当たりばったりで定義しても、大差ないってことですかね。

# xBApBtrCzb 2021/07/03 4:40 https://www.blogger.com/profile/060647091882378654

You must take part in a contest for among the finest blogs on the web. I all advocate this website!

# Illikebuisse cqpjp 2021/07/03 15:29 pharmaceptica

sildenafil tabs 20mg https://pharmaceptica.com/

# erectile shots 2021/07/08 3:53 hydroxychloroquine malaria

hydroxychlor tab 200mg https://plaquenilx.com/# where can i get hydroxychloroquine

# re: RDB?????? 2021/07/23 8:50 hydrocholorquine

hloroquine https://chloroquineorigin.com/# hydroxychloroquine 200 mg twice a day

# fdiygqslwlug 2021/12/03 15:02 dwedayivom

hydroxychloroquine trump https://aralenphosphates.com/

# ilenrulnbiat 2022/05/07 0:06 tojizw

hydroxychloroquine risks https://keys-chloroquinehydro.com/

タイトル
名前
Url
コメント