【症状】どのような症状、現象か?
バグかどうかは良く分からないのですが、SQLITE3のテーブルで
日本語をSJIS_UTF8変換して書きこむとSELECTで取り出した「それ」
の区切りがおかしくなる。2つの項目が「,」が化けてくっついたり、
「,」の位置に改行が入ったりする。
サンプルだと前の3項目がくっ付いて、最後の数値が2番目の項目として
表示されています。最後の数値の前には改行が入っているようです。
前の項目はダブルクォートが消えているようです。
DBに正しく登録されている様子はTkSQLiTEで確認しています。
【再現方法】サンプルソース、再現手順など
下記サンプル。
途中、INSERT文を言っています。
それからSELECTで取り出した「それ」を言っています。
最後に「それ」の日本語項目をUTF8_SJIS変換して別配列に
コピーして言っています。
それからグリッドに表示しています。
ここで前3項目が化けて連結しているのが分かると思います。
//************* DB環境設定 ****************
削除指定とは文字列=「1」
SQ3Hは変数
SQ3CMDとは文字列 //SQLコマンド用
SQは配列=「」
SQ2は配列=「」
GRとはグリッド
そのアイテムはSQ2
SQ2[0,0]=\"TEXT1\"
SQ2[0,1]=\"TEXT2\"
SQ2[0,2]=\"NUM1\"
SQ2[0,3]=\"NUM2\"
「{母艦パス}\\Tts.DB」をSQLITE3開いてSQ3Hに代入。
SQ3CMD=「select count(*) from sqlite_master where name=\'TtsM\'」
SQ3HでSQ3CMDをSQLITE3実行
SQ=それ[1]
もし、(削除指定=「1」) AND (SQ=1)ならば
SQ3Hで「drop table TtsM」をSQLITE3実行 //テーブルが存在したら削除する
SQ=0
もし、SQ=0ならば、
SQ3Hで「create table TtsM (SeqNo INTEGER, TXT1, TXT2, NUM1, NUM2, PRIMARY KEY(SeqNo))」をSQLITE3実行
SQ3CMD=「INSERT INTO TtsM (TXT1, TXT2, NUM1, NUM2) VALUES (\'{\"あああ\"をSJIS_UTF8変換}\',
\'{\"おおお\"をSJIS_UTF8変換}\', \'1\', \'2\');」
SQ3CMDを言う
SQ3HでSQ3CMDをSQLITE3実行
SQ3Hで「SELECT * FROM TtsM;」をSQLITE3実行する
SQ=それ //をCSV取得
SQLITE3閉じる。
SQを言う
SQ2[1,0]=SQ[1,1]をUTF8_SJIS変換
SQ2[1,1]=SQ[1,2]をUTF8_SJIS変換
SQ2[1,2]=SQ[1,3]
SQ2[1,3]=SQ[1,4]
SQ2を言う
GRのアイテムはSQ2
【要望】どのような解決が望ましいか?
正しく取得できるようにしてほしい。
もともとはUTF8変換無しで使用していたのですが、
条件を指定して検索するとあるのに一致しない文字列が
出てきて、その対応でUTF8変換を入れてみましたら、逆に
今回の問題で最悪状態になりました。変換無しだとこのような
状況にはなりません。その代り検索がうまくいかないことが
あります。
【バージョン】なでしこのバージョン 2008/10/31 version 1.5092
【その他】
質問掲示板にも質問してみたのですが今のところレスなしです。
どこに問題があるのか分からないのですがなでしこ側の問題なら
早めに直していただけると助かります。
あるいは、UTF8変換しない状態で文字列によって検索がうまく
一致しない問題が無くなればそちらでも構いません。
ユーザーには当面UTF8変換を取り除いた状態に戻して使って貰います。
※検索の問題が残りますが。
コードの問題は良く分かりません。私の使い方がおかしいのなら指摘して
頂ければ助かります。