mysql:9894
From: Hirofumi Fujiwara <Hirofumi Fujiwara <fuji@xxxxxxxxxx>>
Date: Thu, 22 Jul 2004 14:01:17 +0900 (JST)
Subject: [mysql 09894] Re: 4.1.3のujis
藤原です。 > はじめまして、Tatsuと申します。 > > 4.1.1で運用していたものを4.1.3に移行したら > 特殊文字、(株)がINSERTできなくなりました。 > その他の特殊文字、丸の中の1なども駄目です。 > (NEC特殊文字?) > > サーバーはdefault-character-set=ujisです。 > フィールドのCollationはujis_japanese_ciです。 > > (株)などはPHPでSJISからEUCに変換した後にINSERTしております。 > ちなみに4.1.2でも同じ症状がでます。 > > 原因が4.1.2から実装されている文字コードの自動変換かと思い、 > 直接EUCの(株)のHEX値 0xADEA をバイナリで入れても駄目でした。 > > INSERT INTO test VALUES ( CAST( 0xADEA AS binary ) ); > > 4.1.1では同じSQLでうまく(株)が入ります。 > バイナリで入れているのでクライアント間との > 文字コード自動変換は関係ないと思われるのですが、 > 回避方法等がもしあるのであれば、 > お知恵を貸していただければと思います。 > > よろしくお願い致します。 確認してみましたが、その通りのようです。4.1.3にて確認。 とりあえずは、UJIS で色々と入れてみました。 標準で定義されていない場所と、外字領域と決められている個所以外は駄目み たいです。 _ujis, _binary どちらでやっても同じでした。 character set ujis と指定されていると、ujis以外の文字が来たら、それ以 降は無視されるみたいです。エラーも出さずに、入ったふりをされるのはとて も困ったものです。 カラムを binary にしてしまえば、一応何でも入るようにはなって誤魔化せる ことは確かなのだが、それを解決というのは違うと思う。 各文字コードにおいて、どの範囲がOKで、どの範囲が駄目というのは特に明記 されていないようですね。これは、是非記述して欲しい。 日本語の場合、メーカー外字などの問題が特に大きいので、そのあたりの情報 は欲しいです。 ------------------------------------------------------------------ ★ _ujis の場合 mysql> create table test ( a varchar(10) character set ujis ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xA2AE); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xA2AF); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xADEA); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xF5A1); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xF5FE); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xF5FF); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select a, hex(a) from test; +------+--------+ | a | hex(a) | +------+--------+ | = | A2AE | | | | | | | | ?? | F5A1 | | ?? | F5FE | | | | +------+--------+ 6 rows in set (0.00 sec) ★ _binary の場合 mysql> delete from test; Query OK, 6 rows affected (0.00 sec) mysql> INSERT INTO test VALUES (_binary 0xA2AE); Query OK, 1 row affected (0.06 sec) mysql> INSERT INTO test VALUES (_binary 0xA2AF); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> INSERT INTO test VALUES (_binary 0xADEA); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> INSERT INTO test VALUES (_binary 0xF5A1); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_binary 0xF5FE); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xF5FF); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select a, hex(a) from test; mysql> select a, hex(a) from test; +------+--------+ | a | hex(a) | +------+--------+ | = | A2AE | | | | | | | | ?? | F5A1 | | ?? | F5FE | | | | +------+--------+ 6 rows in set (0.00 sec) ★ 許容されていない文字を含む場合の例 mysql> delete from test; Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_binary 0xA2AEA2AFA2BA); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select a, hex(a) from test; +------+--------+ | a | hex(a) | +------+--------+ | = | A2AE | +------+--------+ 1 row in set (0.00 sec) ★ カラムをbinary にしてしまった場合 mysql> drop table test; Query OK, 0 rows affected (0.00 sec) mysql> create table test ( a varchar(10) character set binary ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO test VALUES (_binary 0xA2AEA2AFA2BA); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO test VALUES (_ujis 0xA2AEA2AFA2BA); Query OK, 1 row affected (0.00 sec) mysql> select a, hex(a) from test; +--------+--------------+ | a | hex(a) | +--------+--------------+ | =??∈ | A2AEA2AFA2BA | | =??∈ | A2AEA2AFA2BA | +--------+--------------+ 2 rows in set (0.00 sec) ------------------------------------------------------------------ 株式会社 タイムインターメディア 藤原 博文 fuji@xxxxxxxxxx 本社 160-0002 東京都新宿区坂町26-27 IPBビル TEL 03-5362-9009 URL http://www.timedia.co.jp/ FAX 03-5362-9008 地図 http://www.timedia.co.jp/company/map/ 新宿線曙橋駅徒歩5分 ------------------------------------------------------------------ ♪ Puzzle Japan http://www.puzzle.jp/ 毎日新作パズルで遊ぼう ♪ ------------------------------------------------------------------
9870 2004-07-17 14:49 ["Tatsuya Yoshizawa" ] 4.1.3のujis -> 9894 2004-07-22 14:01 ┗[Hirofumi Fujiwara <f] 9899 2004-07-26 11:44 ┗["Tatsuya Yoshizawa" ] 9900 2004-07-27 16:31 ┗[Hirofumi Fujiwara <f]