Windowsで生成されたテキストファイルの各行の終わりの `^ M`


10

unixでWindowsのメモ帳で作成されたテキストファイルを開く^Mと、新しい行があるはずの場所にあるのはなぜでしょうか。

私の理解では、Windowsでは、すべての行が\r\n、つまり0x0D0AASCIIで終わりますが、 ^MASCII値があります0x5E4D。これら2つを相互に関連付けることはできません。


Windowsでは、Notepad ++のようなより優れたエディターを使用できます。UNIXの行末でファイルを保存できますが、WindowsでWindowsの行末があるかのように表示できます。その後、両方のOSで正常に表示できます。
ケビン

回答:


19

行末が重要であることはあなたの言うとおりです。どちらのOSも行が「\ n」で終わることを期待しますが、Windowsはunixが予期しない前に「\ r」を追加するため、unixプログラムは独自の方法で「\ r」を出力します。

ファイルは実際には2つの文字「^」と「M」で終わっていません。これは、印刷できない文字を表す一般的な方法です。プログラムは「^」とバイトの値に対応する1のAで始まる文字を出力します。Mは13番目の文字であり、「\ r」はASCIIコード13(または先ほど述べたように0xD)なので、「^ M "


2
これはCtrl-Mの省略形でもあり、キーボードでその文字を取得する方法です。
Steven Pritchard

7
コマンドラインユーティリティdos2unixを使用して、unix2dosテキストファイルをフォーマット間で変換できます。
Chris Nava、2011

1
@Chris True、しかし質問とは何の関係もない
Michael Mrozek

ありがとう!(1)どのプログラムが印刷できない文字をそのように出力するのか疑問に思っていましたか?たとえば、すべてのテキストエディタ/ビューアはそのように機能しますか?(2)どのような印刷できない文字がそのように扱われ、どのような種類が扱われないのですか?たとえば、なぜ視聴者の出力をテキストいない^Jため \n
ティム

1
^ M表現は、GUIテキストエディタよりも数十年前ではなく数年前に登場しました。
Chris Nava、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.