3

あなたのソフトウェアは、他のシステムからの改行文字を処理しますか?

Linux/BSD    linefeed         ^J    10     x0A
Windows/IBM  return linefeed  ^M^J  13 10  x0D x0A
old Macs     return           ^M    13     x0D
others?

念のため、テキスト ファイルでは Linux バージョンの改行文字を使用します。しかし、テキスト ファイルを Windows に持ち込むと、一部のプログラムは、テキスト内の改行文字をうまく処理できません。これにどのように対処しますか?

4

8 に答える 8

3

彼らが言うように、あなたが書くものには厳格であり、あなたが読むものには寛大である.

アプリケーションは、両方の行末を正しく読み取れる必要があります。改行を使用したい場合、および Windows ユーザーを混乱させる可能性がある場合は、それで問題ありません。

しかし、メモ帳を除いて、私が使っているほとんどのプログラムは、両方の方法で満足しているようです。

(そして、私は Windows で Cygwin を使用しています。これにより、すべてが興味深いものになります)

于 2008-09-26T04:56:38.450 に答える
1

標準の Python ディストリビューションには、Windows と Unix/Linux の行末を変換できる crlf.py と lfcr.py という 2 つのコマンドライン スクリプト (ツール/スクリプト内) が付属しています。

[ソース]

于 2008-09-26T04:57:47.013 に答える
1

.NET では、改行は で示されるEnvironment.NewLineため、フレームワークは、システムの改行が何であれ (CR+LF または CR のみまたは LF のみ)、実行時に使用するように設計されています。もちろん、これは最終的に Mono で役立ちます。

于 2008-09-26T04:59:11.160 に答える
0

他の人が言ったように、必要が生じた場合に備えて、周りにはたくさんの (ごく些細な) コンバーターがあります。Ascii モードで FTP を使用して転送を行うと、自動的に変換が行われることに注意してください...

確かに、メモ帳は LF エンディングの問題を抱えている最も顕著なプログラムです...

私が見た中で最も厄介なのは、行末が混在するテキスト ファイルです。これは基本的に、Unix で Windows ファイルを編集している人々、または適切な形式をチェックせずにユーティリティが追加することによって行われます。

于 2008-09-26T05:28:19.920 に答える
0

ほとんどの最新の Windows プログラム (メモ帳の顕著な例外を除く) は、改行のみのファイルを問題なく処理できることがわかると思います。ただし、Windows プログラムで生成されたファイルは依然として crlf で終わる傾向があります。

ほとんどの場合、行末はランタイム ライブラリによってプラットフォーム固有の方法で自動的に処理されます。たとえば、ファイルを開く C プログラムfopen(..., "r")は、実際の行末に関係なく、どのプラットフォームでも一貫した方法 (改行のみ) で行を認識します。

于 2008-09-26T04:54:47.113 に答える
0

私の知る限り、行区切りに問題があるのはメモ帳だけです。事実上、世界中の他のソフトウェアは、これら 3 種類の区切り記号のいずれかを受け入れ、他の種類の区切り記号も受け入れる可能性があります。残念ながら、最近のほとんどのコンピューター ユーザーにとって、メモ帳は最初の手段のエディターです。このような状況を放置しておくのは、Microsoft としては非常に無責任だと思います。Vista で遊んだことはありませんが、XP の場合と同様に、まだ問題があると思います。次のバージョンについて知っている人はいますか?

于 2008-09-26T05:00:39.377 に答える
0

満足するには、標準からの推奨事項に従ってください。

http://unicode.org/standard/reports/tr13/tr13-5.html

また、古い MacOS などの特殊なケースのオプションを提供します。または、確実に検出できる場合は、ケースを自動的に処理します。

Unix スタイルでテキストをフォーマットすることをお勧めします。Windows ユーザーのことは忘れてください。ドキュメントやデータにプレーンテキストを使用する Windows ユーザーはいないためです。プレーンテキストを渡すと、彼らは動揺します。彼らは常に Word または Excel ドキュメントを期待しています。プレーンテキスト ファイルを使用しても、テキストが奇妙に表示されるだけの問題が発生します。

しかし、Unix ユーザーは、すべてのツールが正しく機能しないという経験をします。特に Unix の場合は、標準に厳密に従ってください。

PS。Windows ユーザーが開発者の場合は、Unix でテキストをフォーマットして、それが Unix のファイルだと伝えてください。

于 2012-01-01T19:09:31.683 に答える
-2

「対処する」と言って何を意味するのかわかりませんが、基本的には次のように言えます。

string convertLineBreaks(String line, String lineBreakYouWant) {
  replace all ^M^J or ^M or ^J in line with lineBreakYouWant

  return line
}

編集:質問を読み直した後、(ターゲットシステムの)誤った改行を処理できない他の人々のプログラムをどのように処理するかを意味していると思います。

1) 処理できるプログラムを使用するか、2) 任意のタイプの改行を検出してシステムに適したタイプに変換するスクリプトを使用してファイルを実行することをお勧めします。

于 2008-09-26T04:55:24.913 に答える