OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

文字コード

  • 困ってます
  • 質問No.225332
  • 閲覧数118
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 38% (145/379)

unixで記述したファイル(恐らくはEUCコードと思われます)はDOS環境や、場合によってはunix上のviやlessなどでも、
^M
が行末に表示されてしまいうっとうしいことがあります。

1)この制御コードは一体何なのですか?

2)どのような場合、この制御コードが挿入されますか?あるいは、どのような場合、このコードが表示されるのですか?

3)"^M"が表示されてしまっている場合、どのようにすれば表示がされなくなるのでしょうか?
(その場しのぎ的ではあるが、nkf -s などとしてSJISに変換させれば、dos系のvi や lessではまともに表示されます。他の方法を教えてください...例えば、vi や lessを文字コードを指定して起動するなど...)


#そのほか、文字コード関連でツボが有りましたら教えてください。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル14

ベストアンサー率 50% (1122/2211)

> 1)この制御コードは一体何なのですか?

文字コードの話とは直接関係ありません。OSによって、「改行」を表すコードが違うことがこの現象を引き起こします。

いわゆるDOS系では、改行は 0x0d+0x0a の2バイトで表されます。
unix系では、改行は 0x0a の1バイトで表されます。


> 2)どのような場合、この制御コードが挿入されますか?あるいは、どのような場合、このコードが表示されるのですか?

この制御コードは挿入されるのではなくて、元々「ある」ものです。

unixの流儀で書かれたプログラムが DOS 起源のテキストファイル(*)をそのまま読もうとすると 0x0d が余ります。
それが ^M です。

  (*) 例えば、DOS から ftp のバイナリモードでテキストファイルを持ち上げたりするとこういうことになる


> 3)"^M"が表示されてしまっている場合、どのようにすれば表示がされなくなるのでしょうか?

確かにうっとおしいので、有名どころでは対処されています。

今、確認してみたのですが、私が使っている less version 332+iso224 や vim の JVim 3.0-j2.0a なんかでは
先のケースで挙げたようなファイルでも ^M は表示されません。

因みに OS に付属してくる vi では ^M が表示されます。

# というか、^M が表示される方が普通なんですけどね
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル6

ベストアンサー率 44% (4/9)

1)、2) windowsなどで書かれた英数字のみのテキスト文章をLinuxで読むと改行ごとに^Mが残ってしまうようです。 3) 他の方法としては viで :%2/^M// と入力すると削除できるようです。
1)、2)
windowsなどで書かれた英数字のみのテキスト文章をLinuxで読むと改行ごとに^Mが残ってしまうようです。

3)
他の方法としては
viで
:%2/^M//
と入力すると削除できるようです。
  • 回答No.2
レベル6

ベストアンサー率 44% (4/9)

y2000です。 すみません。 記述に誤りがありました。 3) 他の方法としては viで :%s/^M// と入力すると削除できるようです。 です。
y2000です。
すみません。
記述に誤りがありました。
3)
他の方法としては
viで
:%s/^M//
と入力すると削除できるようです。
です。
  • 回答No.4
レベル13

ベストアンサー率 24% (357/1463)

横レスです。 y2000さんのやり方で、 :%s/^M// では^Mを入力した時点でコマンドが解釈されてしまうので :%s/^V^M// と入力しましょう。 (言うまでもないと思いますが、^V, ^M はそれぞれ  Ctrl+V, Ctrl+M です。)
横レスです。
y2000さんのやり方で、
:%s/^M//
では^Mを入力した時点でコマンドが解釈されてしまうので
:%s/^V^M//
と入力しましょう。
(言うまでもないと思いますが、^V, ^M はそれぞれ
 Ctrl+V, Ctrl+M です。)
  • 回答No.5
レベル7

ベストアンサー率 77% (7/9)

> #そのほか、文字コード関連でツボが有りましたら教えてください。 ご質問とは関連無いかもしれませんが...。 WindowsマシンからUXIXマシンにFTPソフトでファイルコピー を行い、さらにそのコピーのとき、「アスキーモード」を指定 しますと、改行コードが変換され、^Mをとってくれます。 なお、FTPソフトはSJISからEUCへの変換もしてくれます。(指定が必要です。) ...続きを読む
> #そのほか、文字コード関連でツボが有りましたら教えてください。

ご質問とは関連無いかもしれませんが...。

WindowsマシンからUXIXマシンにFTPソフトでファイルコピー
を行い、さらにそのコピーのとき、「アスキーモード」を指定
しますと、改行コードが変換され、^Mをとってくれます。

なお、FTPソフトはSJISからEUCへの変換もしてくれます。(指定が必要です。)

※FTPソフトは、あるマシンから別のマシンにファイルを
コピーするときに使います。(Windowsのエキスプローラ
で行うファイルコピーと同じようなことをFTPという仕組み
で行います。)

私の経験で^Mが付くときは
・FTPソフトでアスキーモードの指定をしていない
・FTPソフトでアスキー/バイナリ自動判別モードにして
いるが、サフィックスがFTPソフトに登録されていないため、
バイナリでコピーされてします。(例えば .c というサフ
ィックスが登録されていないなど。)
です。
いろいろ原因はありえると思いますが。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ