> 近況的2019年02月 <

各プロジェクトはこんな感じでした。 ここはnyasu@3webの「近況的雑文集」のページです。
2002年から動いているので、デザインとか、いろいろ古いとか言わないように。当時から古かったけど。
話題の分類
私的プロジェクトその他
[this]
この近況まとめシステム。
[palmsync]
PalmSync
[rubyeb]
RubyEB
[vruby]
VisualuRuby計画(仮称)
[linux]
うちのLinuxBox関係の話題
[win]
Windows関係
[pda]
PDA関係。Palmとか
[ruby]
Ruby一般
[net][web]
ネット系雑談
[etc]
その他雑談

一応話題は計算機関係に縛る予定。予定は未定。
話題による分類ページは作成予定。同上。
あと、独り言がわんさか。

2019-2-9

コマンドプロンプトとcygwin(mintty) [ruby]

ぼちぼちとruby-1.8系のままだったスクリプトをruby-2.6系に移行しつつあります。で、Windows上でハマった点を1つ。エンコード関係の挙動の違いです。スクリプトを起動する環境によりARGVのencodingが異なる点で引っかかりました。というか、コマンドラインから起動したとき、encoding間違ってませんかね。(詳細未確認)

ruby-2.6.0からruby-2.6.1に変えたらで変化があるかと思ったのですが無かったです。

スクリプト cygwin on mintty出力 コマンドプロンプト出力
# ruby -v a.rb 号 #起動 ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-cygwin] ruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-cygwin]
puts ARGV[0]
puts ARGV[0].encoding UTF-8 Windows-31J
puts ARGV[0].encode("UTF-8") 蜿キ
puts "ろ" + ARGV[0].encode("UTF-8") ろ号 ろ蜿キ

ちなみに引数が「号」だと最後まで進みますが、引数を「号」から「撃破」に変えると

Traceback (most recent call last): 1: from a.rb:5:in `
' a.rb:4:in `encode': "\x83\xE7" from Windows-31J to UTF-8 (Encoding::UndefinedConversionError)
になります。

解決は一行目に下記を挿入し、ARGV[0]の代わりにa0を使って処理します。

a0=ARGV[0].dup.force_encoding("UTF-8")
これで双方同じ動きになります。ARGV[0]はフリーズされてるので、直接ARGV[0].force_encodingは出来ません。

コマンドプロンプトでも微妙にちゃんと表示できてたりするので、しばらく????となって悩んでました。

勘のよい人は分かっていると思いますが、ネタは艦これの任務検索・閲覧スクリプトです。

表記にtableを使いましたが、逆にわかりにくいかな。

...ちょっと調べました。解決策もう一つあります。コマンドライン側は環境変数LANGの設定で問題出ません。

set LANG=ja_JP.utf8
むう。WindowsでもLANG見るのか。そして必要なのか。


2019年01月へ

メールを出すつもりの方は

こっちへ