mysql:9469
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Fri, 28 May 2004 23:11:46 +0900
Subject: [mysql 09469] Re: 日本語対応上の問題点
とみたです。 # しまった、面白そうな話題に乗り遅れてしまった…(^^; On Thu, 27 May 2004 12:36:04 +0900 SUGAWARA Hajime <sugawara@xxxxxxxxxx> wrote: > Hirofumi Fujiwara <fuji@xxxxxxxxxx>さん: > > 日本語文字列を扱うときに、バイト数、文字数、カラム数(半角で何文字) > > の3つを考えながら行わないといけないのですが、MySQLに限らず、SQLは > > バイト数または文字数しか考慮していないことが多く、表示に直接関係する > > 場合、多バイト文字である日本語などを扱うときには、カラム数が問題にな > > ります。 > 「カラム数」というのは表示上の問題だと思われるので、そういったものはホ > スト側(SQL側)ではなくクライアント側(アプリケーション側)で解決すべき > 問題なのではないかと思います。 私もそう思います。 昔ながらの C API でカラム数を取得するなら、マルチバイト文字列をワイド 文字列に変換して、wcwidth() を使えば取得できますね。 ↓こんな感じ。 #include <stdlib.h> #include <locale.h> #include <wchar.h> int main(int argc, char *argv[]) { char *mbstr = "ABCあいうえお"; wchar_t wcstr[1024]; size_t n; setlocale(LC_ALL, ""); n = mbstowcs(wcstr, mbstr, 1024); printf("%d\n", wcswidth(wcstr, n)); /* => 13: 文字列全体のカラム数 */ printf("%d\n", wcwidth(wcstr[0])); /* => 1: "A"のカラム数 */ printf("%d\n", wcwidth(wcstr[3])); /* => 2: "あ"のカラム数 */ } この例では書いてませんが、日本語EUCでは、半角カタカナは2バイトですが ちゃんとカラム数は 1 と出力されます。 # 懐かしい…。 -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
9444 2004-05-27 12:11 [Hirofumi Fujiwara <f] 日本語対応上の問題点 9445 2004-05-27 12:28 ┣[seiji takegata <take] 9450 2004-05-27 15:23 ┃┗[IWAMURO Motonori <iw] 9458 2004-05-28 11:28 ┃ ┗[Hirofumi Fujiwara <f] 9459 2004-05-28 13:53 ┃ ┣[seiji takegata <take] 9462 2004-05-28 15:38 ┃ ┃┗[IWAMURO Motonori <iw] 9463 2004-05-28 15:57 ┃ ┣[IWAMURO Motonori <iw] 9464 2004-05-28 16:14 ┃ ┃┗["Kim, Dong Kyu" <kim] 9466 2004-05-28 18:58 ┃ ┃ ┗[深海水草 <VYG01106@x] 9465 2004-05-28 18:58 ┃ ┗[深海水草 <VYG01106@x] 9467 2004-05-28 19:32 ┃ ┗[Hirofumi Fujiwara <f] 9446 2004-05-27 12:36 ┣[SUGAWARA Hajime <sug] 9447 2004-05-27 12:41 ┃┣["T.P.S.Nakagawa" <ya] 9448 2004-05-27 13:04 ┃┃┗[SUGAWARA Hajime <sug] 9449 2004-05-27 13:10 ┃┃ ┗["T.P.S.Nakagawa" <ya] 9455 2004-05-27 17:55 ┃┣[Hirofumi Fujiwara <f] 9456 2004-05-27 22:48 ┃┃┗[SUGAWARA Hajime <sug] -> 9469 2004-05-28 23:11 ┃┗[とみたまさひろ <tomm] 9480 2004-05-31 11:19 ┃ ┗[IWAMURO Motonori <iw] 9483 2004-05-31 15:46 ┃ ┣[とみたまさひろ <tomm] 9501 2004-06-01 11:52 ┃ ┃┗[IWAMURO Motonori <iw] 9502 2004-06-01 12:12 ┃ ┃ ┣[SUGAWARA Hajime <sug] 9509 2004-06-01 16:36 ┃ ┃ ┃┗[IWAMURO Motonori <iw] 9528 2004-06-03 18:30 ┃ ┃ ┃ ┗[とみたまさひろ <tomm] 9507 2004-06-01 13:49 ┃ ┃ ┗[とみたまさひろ <tomm] 9488 2004-05-31 21:41 ┃ ┗[Hirofumi Fujiwara <f] 9489 2004-05-31 22:10 ┃ ┗[mohri <mohri@xxxxxxx] 9491 2004-05-31 22:33 ┃ ┗[ML account <ml@xxxxx] 9492 2004-05-31 22:48 ┃ ┣[mohri <mohri@xxxxxxx] 9493 2004-05-31 23:12 ┃ ┃┗[ML account <ml@xxxxx] 9494 2004-05-31 23:26 ┃ ┃ ┗[mohri <mohri@xxxxxxx] 9512 2004-06-01 17:45 ┃ ┗[Hirofumi Fujiwara <f] 9451 2004-05-27 15:44 ┗[UNO Shintaro <uno@xx]