読者です 読者をやめる 読者になる 読者になる

squirrelのsjis対応

http://svn.sourceforge.jp/svnroot/shive/junk/diary/20080904/sqlexer.cpp
ReadStringで文字列をパースしているようなので、leadbyteが来たらもう1文字を連続して読むように変更しました。ちゃんとエラーチェックしないとごみデータを渡したときにおかしなことになるんですが、まぁいいか。
luaのときはトークンまでsjis対応してたので日本語の変数とか作れたんですが、実際問題そんなの要らないのでこれでいいや。
luaの場合1文字取るという動作がトークンも文字列ところを通るので修正すると勝手にトークンも対応されます。
#setlocale(LC_ALL,"")を忘れずに。

いま気づいたこと

sjis対応前の元の実装でも文字列中のマルチバイト文字に'\\'が含まれなければそのまま処理してくれそうですね。sjisが壊れるのまでは確認していたんですが、UTF8やEUCはそのままでも動作しそう。
ただ、もちろんそのままの文字コードでprintなどに文字列がくるのでwindows上で表示しようとすると結局変換しなくてはいけません。やっぱりsjis対応が一番しっくりくるかな。