2

メモ帳でファイルを開くとき、私は疑問に思っています。キャリッジ リターン/ライン フィードのない連続した行が表示されます。

ファイルを読み取るためのJavaプログラムを作成しました。\nまたはを使用してファイルからデータを分割するとSystem.getProperty("line.separator");。たくさんの線が見えます。

16 進エディタで、ファイルの改行 (UNIX で使用) に '0A' があり、メモ帳では四角形として表示されることがわかりました。

さて、私の質問は、「0D」と「OA」(Windows でキャリッジ リターンとライン フィードに使用される)がない場合です。私のJavaプログラムはどのようにデータを行に分割していますか? それを分割してはいけません。

誰でも何か考えがありますか?

4

3 に答える 3

5

Java は内部的に Unicode で動作します。

Unicode 標準では、準拠するアプリケーションが
改行文字として認識する必要がある多数の文字が定義されてい
ます 。 U+000D CR+LF: CR (U+000D) に続く LF (U+000A) NEL: 次の行、U+0085 LS: 行区切り文字、U+2028 PS: 段落区切り文字、U+2029





( http://en.wikipedia.org/wiki/Newline\n ) そのため、改行として解釈されます。

于 2012-07-13T07:21:27.347 に答える
2

文字\n0a(キャリッジリターン)です。Windows の行区切り記号\nのみで分割すると、文字0aが残され、 で分割されます。0d

メモ帳は0a正方形として表示されます0d0aが、改行としてレンダリングされます。

これは、Windows で Scala (カバーの下にある Java) を使用した例です。

scala> "123\n456".split(System.getProperty("line.separator")).length
res1: Int = 1

scala> "123\n456".split("\r\n").length  // same as the line above on Windows
res2: Int = 1

scala> "123\n456".split("\n").length
res3: Int = 2
于 2012-07-13T07:21:47.173 に答える
0

Windowsのメモ帳は、あらゆる種類のテキストファイルを処理するときに強く避けるべきものです。Notepad++
の 使用をお勧めします。

彼はあなたのテキストをうまく表示するだけでなく、ファイルをUTF-8でBOMなしでエンコードする機能も備えています:D

于 2012-07-13T07:17:34.717 に答える