HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0829
gurandnetloadで取得テキストの改行がおかしい6解決


gurand

リンク

2011/8/29(Mon) 15:53:42|NO.40924

netloadでサーバーに保存したテキストデーターを取得して
見てみると、改行がおかしいです。なぜでしょうか・・・

サーバー上のテキスト →                aaaa bbbb cccc #include "hspinet.as" netinit neturl "http://test/" netload "テスト.txt" exec "テスト.txt", , "edit"

テキストは「SHIFT-JIS」で保存してあり、ローカルで見ると問題ないですが。
一度サーバーにあげて上記プログラムを実行すると改行部分が文字化けして
「aaaabbbbcccc」と、一列に並んでしまいます・・



この記事に返信する


skyblue

リンク

2011/8/29(Mon) 18:30:37|NO.40926

改行コードが原因だと思います。



kitu

リンク

2011/8/29(Mon) 20:20:56|NO.40933

まずは改行コードがちゃんとCRLFになっているかどうか、
確認してみてはどうでしょうか〜(^^


#module #deffunc Replace var buf, str befStr, str aftStr newcom oReg, "VBScript.RegExp" comres buf oReg( "Pattern" ) = befStr oReg( "Global" ) = 1 oReg->"Replace" buf, aftStr delcom oReg return #global CODE_CR = " " poke CODE_CR, 0, 13 CODE_LF = " " poke CODE_LF, 0, 10 sdim data, 256 notesel data noteload "テスト.txt" mes data if ( instr( data, 0, "\n" ) != -1 ) { mes "◎改行コードはCRLFです\n" } else { if ( instr( data, 0, CODE_CR ) != -1 ) { mes "▲改行コードはCRです\n" Replace data, CODE_CR, "\n" mes "改行コードをCRLFに変更しました" mes data } else { if ( instr( data, 0, CODE_LF ) != -1 ) { mes "▲改行コードはLFです\n" Replace data, CODE_LF, "\n" mes "改行コードをCRLFに変更しました" mes data } } }



gurand

リンク

2011/8/30(Tue) 01:38:22|NO.40941

ありがとうございます。
kituさんのスクリプトを動かしてnotesaveしてサーバーにあげました。
サーバーにある状態ではちゃんと改行もされているのですが、
やはり取得したのを見ると改行がバグってました。汗

拡張子を.txt以外にして、

exec "notepad.exe テスト.tx"
にして読み込むとなぜかうまく行きました・・
どうやら.txtで取得した時だけ改行がおかしくなるみたいでした。
謎です・・



inovia

リンク

2011/8/30(Tue) 04:56:00|NO.40943

FTPでテキストファイルをアップロードしている場合は、
アスキーモードになっていてサーバー側の改行コードに合わせて
アップロード時に変換されている可能性があります。

FTPのクライアントソフトでは大概拡張子で判断しているので、
拡張子を.txとした場合はアスキーモードではなくバイナリモード(変換せずそのまま)でアップロードされたため
問題なかったのではと考えられます。

定番のFFFTPの初期設定はアスキー/バイナリ転送モードを拡張子で切り替えるようになっています。
設定で常にバイナリ転送モードにすれば問題が解決すると思います。



gurand

リンク

2011/8/30(Tue) 13:58:41|NO.40948

inoviaさんありがとうございます。

バイナリモード転送の有無が原因でした!

本当にありがとうございました ペコリ



skyblue

リンク

2011/8/30(Tue) 19:35:46|NO.40959

どうせなら、取得した後にgetstrを使ってCRを区切りキャラとして分割し
strtrimを使ってLFを消して別の変数に代入の後\nを代入、
繰り返せば、転送モードなんて関係なし。
ちなみに、 instrを使って、CRを検索後その後に instrでLFがあるか確認すればなおよし



ONION software Copyright 1997-2023(c) All rights reserved.