骨のダイスを転がそう
2012-02-26
_ [JScript][SQLite] 文字列の扱い
サクラエディタで、SQLite が使えないか、と思い、SQLiteODBC をインストールしてみて、いろいろいじってみる。
Shift_JIS で保存した、js を cscript で実行すると文字列は、SQLite に UTF-8 で保存され、SQLite からの文字の取り出しも問題なし。
一方で、UTF-8 で保存したスクリプトから INSERT すると文字化けする。というか、JScript って、スクリプト自身のエンコーディングや文字列リテラルのエンコーディングってどうやって管理してるんだ ?。
いろいろ調べてみると、Windows (ウチは7だが、2000以降全部) は、文字列は、UTF-16LE というエンコーディングとして扱われているようだ。一方、スクリプトのリテラルが化けないのは、Shift-JIS (というか CP932 というか Windows-31J) の場合だけ。ここを切り替える方法はあるのかは良く分からない。(ruby の -Ks オプションとか、 -Ku オプションみたいなの)
ADODB.Stream を使った文字コード変換について書かれているページはけっこう見付かったけど、これは、ファイルからファイルへの変換で、途中で、スクリプトの中の文字列にしていない。するとSQLite を使おうと思うと、「エディタで指定されたエンコーディング」→「Shift_JIS」とした上で、SQLite に書き込むって流れになりそうだなあ。
[ツッコミを入れる]