「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

@118■ (#284) SQLITE3のUTF8変換が変? - とんとん (2008-11-10 00:59) /緊急 未処理
【症状】どのような症状、現象か?

バグかどうかは良く分からないのですが、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変換を取り除いた状態に戻して使って貰います。
※検索の問題が残りますが。

コードの問題は良く分かりません。私の使い方がおかしいのなら指摘して
頂ければ助かります。
SQLITE3のUTF8変換が変? / とんとん (2008-11-10 00:59) (#284)/ 緊急 未処理
  解決しました / とんとん (2008-11-11 23:46) (#291)/ 緊急 解決

(#284)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能