痔になりやすい生活習慣とは?

ruby&mac&文字の扱い 初心者です。 mac os 10.6.8

HTMLの情報を読み込みテキストファイルに書き出したいのですが、
ターミナル上、putsではきちんと日本語で表示されるのですが、書き出したあとの
txtファイルを開くと文字化けしています。

File.open("test.txt","w") do |file|

@s_info.each do |data|

puts data[:m_sec]

file.puts data[:m_sec]

end

end

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

テキストエディットから、現在のコードを確認するのはちょっと大変です。


他のテキストエディタを使って開いてみてはどうでしょうか?
例えば

mi
http://www.mimikaki.net/
などが定番で、これだと、自動判定もテキストエディットより優秀だし、失敗しても手動で変更できます。


文字コードが確認できたら、それが期待するものなのか、違うものなのかを確認します。
期待するものなら、テキストエディットで自動判別できないだけです。
期待と違うものなら、 File.open("test.txt","w") で、出力文字コードを指定するようにます。
http://docs.ruby-lang.org/ja/1.9.3/class/IO.html


例:
期待する文字コード: UTF-8
text.txtの文字コード: UTF-8
 なら、テキストエディットで自動判定できないだけ。
期待する文字コード: UTF-8
text.txtの文字コード: EUC-JP
 なら、UTF-8で出力するように File.open("test.txt","w:utf-8") 等と指定する
    • good
    • 0
この回答へのお礼

ご丁寧にわかりやすいご説明ありがとうございます!
sublime text2で開いたらきちんと見れました。

大変勉強になり助かりました。

お礼日時:2014/12/15 15:38

> txtファイルを開くと文字化けしています。



この開くのに使ったアプリケーションは何ですか?
そのアプリケーションに、「文字コード」「エンコード」等という項目はありませんか?

この回答への補足

テキストエディットです。(test.txt)

補足日時:2014/12/14 20:53
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qファイルの特定行を取り出したい.

こちらのサイトを参考にさせていただきました.
http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9

やりたいことはファイルにアクセスして2行目,3行目の文字列をとってくることです.

===foo===
hoge
hige
foobar

File::open("foo") {|content|
 puts content.readlines[1]
 puts content.readlines[2]
}

このようなプログラムだと,
hige
nil
となります.ですが,以下のように分割するとうまくいきます.
File::open("foo") {|content|
 puts content.readlines[1]
}
File::open("foo") {|content|
 puts content.readlines[2]
}
hige
foobar

できればopenは一回だけで済ませたいのですが可能でしょうか?
Ruby初心者なのでくだらない質問かもしれませんが,ご教授ねがいます.

こちらのサイトを参考にさせていただきました.
http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9

やりたいことはファイルにアクセスして2行目,3行目の文字列をとってくることです.

===foo===
hoge
hige
foobar

File::open("foo") {|content|
 puts content.readlines[1]
 puts content.readlines[2]
}

このようなプログラムだと,
hige
nil
となります.ですが,以下のように分割するとうまくいきます.
File::open("foo") {|content|
 puts c...続きを読む

Aベストアンサー

No3です。

>Rubyのみ初心者です.

よかった。

>>確認2:readlinesというメソッドはどういう機能を持ったメソッドだと思っていますか?

>ファイルの内容が一行ずつ入った配列だと思ってます

ファイルを行の配列のようにアクセスできるメソッドと思っているのなら間違いです。
ファイルから全データを読み込んで、それを配列の形で返すメソッドです。したがって、呼び出したことで、該当ファイルのファイルポインタ(ファイル中で次に読み取る文字位置)は末尾のEOFの所に行ってしまいます。二回目の呼び出しで、EOFに達したファイルを再度読むことになるので空が返ります。具体的には配列なので [] が返ります。

他の方がお書きのように、呼び出し結果の配列オブジェクトを保持しておいて、以降はそれをつかうといいです。

QRuby 改行文字の挿入

こんにちは。
Rubyの質問です。
htmlの文章にrubyで改行文字を挿入してそれを認識させたいのですが、
htmlの文章内に¥nを挿入しても読み込んだ際にうまく認識してくれませんでした。

何か他に方法があるのでしょうか。
ご教授の程よろしくお願い致します。

Aベストアンサー

どのようにして\nを挿入したのか、不明ですが、エディタを使用して行った前提で回答です。
改行コードを埋め込む場合は、\nを挿入したい位置で、Enterキーを押下してください。
それで、見かけ上、2行になれば、そこに改行コードが埋めこまれたことになります。

尚、通常は\nの文字そのものは、\とnの2文字にすぎません。
ruby のスクリプトでそれを"\n"のようにダブルクオートでくくった場合、それをrubyが改行コードとして扱う
という特別の約束があります。

ですので、エディタで行なう場合は、実際の改行コードを埋め込まないといけません。

QrubyでC言語のexitにあたる構文は?

現在、C言語のプログラムをrubyに書き換えています。

そこで、C言語のexitに当たるrubyの構文、もしくは、
文法が見つからず、困ってます。
(ある条件になったら、強制的にrubyの実行を
 停止させたいのですが、、、)
(__END__ですか?)

詳しい方が居ましたら、ご指南下さい。

Aベストアンサー

#2です。
>exit のあとの数字について詳しく知らないので、
>教えていただけたら幸いです。
exitのあとの数字は終了コードといって、どのような状態で、このプログラムが終了したかを、呼び出しもとに伝える為のものです。
この値は、呼び出し元と、呼び出される側(このプログラム)との決め毎なので、どのようにきめてもかまわないのですが、
ふつうは、終了コード:0で終了したときが、正常終了にします。
それ以外の値は、異常終了を示す値にします。

この終了コードは、なにかのサブルーチンを作ったときの、戻り値に似ています。
サブルーチンの戻り値は、呼び出しもとと呼び出される側(サブルーチン側)とで、自由にきめて良いのですが、
通常は、正常:0、以外は、それなりの異常にしますよね。

QRubyの変数を含んだ正規表現について

下のように正規表現でlineと
1=,2=などから始まる行を抽出する
プログラムですが、どうやら正規表現の左辺(//の中身)
には変数は使えないようです。iが文字として
認識されているようです。
解決策を教えてください。

while line = io.gets
 20.times{ |i|
  if /^i=(.*)/ =~ line
  p $1
 }
end

Aベストアンサー

if /^i=(.*)/ =~ line を
if /^#{i}=(.*)/ =~ line
として下さい。#{i}とすることにより、iが変数展開されます。
蛇足ですが、提示されたスクリプトは実行時エラーになります。正しい、スクリプトを期待する場合は、その旨補足下さい。

Q配列に複数の値があるか簡潔に判断する方法

hairetu = [1,2,3,4,5]

という配列があった時
3と4が含まれているかを判断するには

if hairetu.include?(3) && hairetu.include?(4)
 p "3と4が含まれている"
end

と書けばよいのですが
条件が増えたら、見にくくなってしまいます。
そういった理由で

if hairetu.include?(3,4)

if hairetu.include?(3 or 4)
という具合に、短く書く方法があれば
ご教授お願い致します。

Aベストアンサー

この場合はArray#-が単純で良いと思います。
([3, 4] - hairetu).empty?

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QCSVファイルの特定列を新たなCSVファイルに変換

ruby 初心者の50代のサラリーマンです。
若い人にrubyがいいだろうと言われて挑戦していますが、なかなか分かりません。
どなたか、教えてください。

大きなCSVファイルがあって、
1行目は項目名が入っていて不要です。
2行目以降、
各行2列目にレコード名、
各行8列目に欲しいデータが入っています。
データは29行毎に1レコード分になっています。
レコード名は各行で重複しています。つまり、

試験日,サンプルA,***,・・・・・,観測値1,・・・・・・
試験日,サンプルA,***,・・・・・,観測値2,・・・・・・

試験日,サンプルA,***,・・・・・,観測値29,・・・・・・
試験日,サンプルB,***,・・・・・,観測値1,・・・・・・
試験日,サンプルB,***,・・・・・,観測値2,・・・・・・

試験日,サンプルB,***,・・・・・,観測値29,・・・・・・

というデータです。

それを、
サンプルA,観測値1,観測値2,・・・・・,観測値29
サンプルB,観測値1,観測値2,・・・・・,観測値29
サンプルC,観測値1,観測値2,・・・・・,観測値29

と直してcsvファイルに保存し直したいのです。

どなたか、rubyプログラムの書き方を指南して下さい。

ruby 初心者の50代のサラリーマンです。
若い人にrubyがいいだろうと言われて挑戦していますが、なかなか分かりません。
どなたか、教えてください。

大きなCSVファイルがあって、
1行目は項目名が入っていて不要です。
2行目以降、
各行2列目にレコード名、
各行8列目に欲しいデータが入っています。
データは29行毎に1レコード分になっています。
レコード名は各行で重複しています。つまり、

試験日,サンプルA,***,・・・・・,観測値1,・・・・・・
試験日,サンプルA,***,・・・・・,観測値...続きを読む

Aベストアンサー

こんにちは
私も業務で似たようなプログラムを書いてデータ処理しています。
Rubyを覚えるとお手軽に処理できて便利ですよ!

こんな感じで如何でしょうか?
data.csvを読み込んで、output.csvに出力します。
CSVクラスは使ったことないので使用していません。

プログラムがどの様な動作をしているかは、ご自身で確認してみて下さいね。

----ここから
data = Hash.new{|h,k| h[k]=[]}

# CSVファイル読み込み
first_line = true
File.foreach('data.csv') do |line|
if first_line # 1行目読み飛ばし
first_line = false
next
else
ary = line.chomp.split(",") # CSVなので区切りは半角のカンマでは?
data[ary[1]].push(ary[7])
end
end

# データ出力
File.open('output.csv',"w") do |fo|
data.each_key do |key|
fo.puts "#{key},#{data[key].join(',')}"
end
end
----ここまで

こんにちは
私も業務で似たようなプログラムを書いてデータ処理しています。
Rubyを覚えるとお手軽に処理できて便利ですよ!

こんな感じで如何でしょうか?
data.csvを読み込んで、output.csvに出力します。
CSVクラスは使ったことないので使用していません。

プログラムがどの様な動作をしているかは、ご自身で確認してみて下さいね。

----ここから
data = Hash.new{|h,k| h[k]=[]}

# CSVファイル読み込み
first_line = true
File.foreach('data.csv') do |line|
if first_line # 1行目読み飛ばし
fir...続きを読む

Q英語で「個数」「件数」は?

質問は単純です。
英語で「個数」や「件数」をなんというか、です。

とりあえず、思いついたのは、numberでした。
たとえば、「りんごの個数」は"a number of apples"ですか?
でも、"a number of"は「いくつかの」という意味ですよね。

「データの件数」は"a number of data"でしょうか?

私は英語はほとんど出来ませんが、numberは「個数」というよりも「番号」という意味であるような気がしてなりません。

Aベストアンサー

>「個数」や「件数」をなんというか、です。
>とりあえず、思いついたのは、numberでした。
意外に思われるかもしれまんせんが、語の選択はnumberであっています、と思います。

>「りんごの個数」
the number of (the) apples

>「データの件数」
the number of (the) data

>numberは「個数」というよりも「番号」という意味であるような気がしてなりません。
実は、昔、私も、「個数や件数はなんていうのかな、え、number? え、本当?」と、奇異に感じたことを、思い出しました。


人気Q&Aランキング