- - PR -
テキストでの奇妙な符号についての疑問
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-24 14:59
皆さんはご存知だと思いますが、Windows・DOSシステムで、
テキスト中の「改行」はバイナリコードを見れば16進の 0D0A です。 (0 はゼロです) 試しに 0D だけ、あるいは 0A だけならどうなるかを調べたいので、 Stirlingソフトを利用し、下記のバイナリコードを書きました。 16進 61 0D 0A 62 61 0D 62 61 0A 62 テキスト a 改行 b a ? b a ? b 試したいことは、二ヵ所の「?」のところです。 そして実際にテキストを開いて、下記の内容を見ました。 a ba@baAb (@Aはこの掲示板でうまく表示できません。@は■見たいな符号でそれより少し小さい、Aは↑見たいな符号でそれより少し小さい。) つまり0Dは■ で、0Aは↑ であるという結果になりました。 ところがよく分らないのは、Shift_JISコード表 (http://ash.jp/code/codetbl2.htm) にはこの二つの記号は存在しません。そもそも0D、0A というコードもありません。 DOS・WindowsはShift_JISコードじゃないんですか。 しかしこのコード表に定義されていないコードも表示されました。 それはなぜですか。また、なぜ■↑になったんですか。それは どこで決められたでしょうか。 以上、奇妙なコード、符号についての疑問です。宜しくお願い致します。 [ メッセージ編集済み 編集者: wfwfang 編集日時 2006-08-24 15:01 ] | ||||||||||||||||||||
|
投稿日時: 2006-08-24 15:22
0x0d 7bit コードは ASCII コードセット
0x0a 7bit コードは ASCII コードセット ShiftJIS は 2バイト(16bit)文字コードセット 普通は 0d = \r 0a = \n で出てくる。 | ||||||||||||||||||||
|
投稿日時: 2006-08-24 15:26
改行コードというのは、Win&DOS、Mac、UNIXでそれぞれ違うものなのです。
http://www.atmarkit.co.jp/fwin2k/win2ktips/403eol/eol.html Windowsでは、改行コードは0D+0Aなので、0Dのみ、0Aのみの場合は化けてしまうんですね。 化けるメカニズムについては、私は存じません。 マイクロソフトに聞いてみましょう。
もっとよく見てみましょう。半角の英数字も演算記号もありませんよ。 ASCII文字コードはこちらをどうぞ。 http://e-words.jp/p/r-ascii.html | ||||||||||||||||||||
|
投稿日時: 2006-08-24 15:28
こんにちは。
“Stirlingソフト”と書かれると、知らない方は何かわかりませんので、バイナリエ ディタと書くといいですよ。 # 先日ちょうど Stirling を使用したところで良かった。すぐ BZ に戻しちゃったけど。
これも「どんなアプリケーションで開いたか」を正しく書かなければ、他の方には 伝わりません。私の環境ではメモ帳で開いて再現するのを確認しました。
これは、メモ帳がたまたまそういった表示になっているだけで、0D が『■』 0A が『↑』という結論にはならないと思います。
wfwfangさんが見られたのは “Shift_JISコード表” ですよね。それには改行 コードに代表される、いわゆるコントロールコードが掲載されていなかっただけで はないでしょうか。この場合は “ASCIIコード表” を見るのが適切かもしれませ ん。 # リンクしようかと思ったけど Edosson さんの示してくれたやつがあったので # 止めた メモ帳で改行コードが ■ ↑ になってしまったのは、いわゆる文字化けだと思わ れます。メモ帳は改行コードとして 0D 0A しか想定されていません。それ以外 の組み合わせの場合は単なるバイナリコードとして処理されてしまいますので、 ■ や ↑ として表示されてしまったのだと思います。 秀丸など他のテキストエディタで開いてみると正しく表示されるかもしれません。 # しかし Edosson さんとかぶりまくりんぐ。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||||||||||
|
投稿日時: 2006-08-24 15:29
こんにちは。
たぶん、wfwfangさんは Windows に標準搭載されている メモ帳 で件のファイルを開かれたのだと思いますが、メモ帳 は CR+LF のみを改行として認識します。 CR や LF が奇妙な表示になるのは、エンコーディングの問題ではなく、メモ帳 というソフトに特有の問題だと思います。 件のファイルを例えば Internet Explorer で開くと適切な位置で改行されるのを確認できます。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||||||||||||||
|
投稿日時: 2006-08-24 15:30
「開いた」というのは何を使われていますか?制御コードの表示方法については何の規定もありませんので(そもそも「表示する」ことを想定していない)。
#エディタなら0x0dと0x0aを「←」と「↓」で表示したりしますし。 SingleByteは通常Shift_JISでもJISでもEUC-JPでも変わりません。ASCIIかJIS(JIS X 0211)かの違いでバックスラッシュや円マークの差はありますが、制御コードに関しては同一です。例示されたサイトのコード表(これはShift_JISじゃなくてJIS X 0208ですね)でいうと http://ash.jp/code/ctrltbl.htm が妥当かと思います。 このあたりは http://euc.jp/i18n/charcode.ja.html なども参考に。 | ||||||||||||||||||||
|
投稿日時: 2006-08-24 17:27
見た目に誤魔化されちゃ駄目です。
真実を見つめるんです。 真実は、常に「61 0D 0A 62 61 0D 62 61 0A 62」なんですよ。 #と釣られてみるw | ||||||||||||||||||||
|
投稿日時: 2006-08-25 11:56
僕の説明不足で申し訳ございません。 ご指摘どうもありがとうございます。 [ メッセージ編集済み 編集者: wfwfang 編集日時 2006-08-25 13:09 ] |