- PR -

テキストでの奇妙な符号についての疑問

投稿者投稿内容
wfwfang
会議室デビュー日: 2006/08/24
投稿数: 9
投稿日時: 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 ]
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2006-08-24 15:22
0x0d 7bit コードは ASCII コードセット
0x0a 7bit コードは ASCII コードセット
ShiftJIS は 2バイト(16bit)文字コードセット

普通は

0d = \r
0a = \n

で出てくる。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-08-24 15:26
改行コードというのは、Win&DOS、Mac、UNIXでそれぞれ違うものなのです。
http://www.atmarkit.co.jp/fwin2k/win2ktips/403eol/eol.html
Windowsでは、改行コードは0D+0Aなので、0Dのみ、0Aのみの場合は化けてしまうんですね。
化けるメカニズムについては、私は存じません。
マイクロソフトに聞いてみましょう。
引用:

ところがよく分らないのは、Shift_JISコード表
(http://ash.jp/code/codetbl2.htm)
にはこの二つの記号は存在しません。そもそも0D、0A
というコードもありません。


もっとよく見てみましょう。半角の英数字も演算記号もありませんよ。

ASCII文字コードはこちらをどうぞ。
http://e-words.jp/p/r-ascii.html
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-08-24 15:28
こんにちは。

引用:

試しに 0D だけ、あるいは 0A だけならどうなるかを調べたいので、
Stirlingソフトを利用し、下記のバイナリコードを書きました。


“Stirlingソフト”と書かれると、知らない方は何かわかりませんので、バイナリエ
ディタと書くといいですよ。
# 先日ちょうど Stirling を使用したところで良かった。すぐ BZ に戻しちゃったけど。

引用:

そして実際にテキストを開いて、下記の内容を見ました。

a
ba@baAb

(@Aはこの掲示板でうまく表示できません。@は■見たいな符号でそれより少し小さい、Aは↑見たいな符号でそれより少し小さい。)


これも「どんなアプリケーションで開いたか」を正しく書かなければ、他の方には
伝わりません。私の環境ではメモ帳で開いて再現するのを確認しました。

引用:

つまり0Dは■
で、0Aは↑
であるという結果になりました。


これは、メモ帳がたまたまそういった表示になっているだけで、0D が『■』 0A
が『↑』という結論にはならないと思います。

引用:

ところがよく分らないのは、Shift_JISコード表
(http://ash.jp/code/codetbl2.htm)
にはこの二つの記号は存在しません。そもそも0D、0A
というコードもありません。

DOS・WindowsはShift_JISコードじゃないんですか。
しかしこのコード表に定義されていないコードも表示されました。
それはなぜですか。また、なぜ■↑になったんですか。それは
どこで決められたでしょうか。


wfwfangさんが見られたのは “Shift_JISコード表” ですよね。それには改行
コードに代表される、いわゆるコントロールコードが掲載されていなかっただけで
はないでしょうか。この場合は “ASCIIコード表” を見るのが適切かもしれませ
ん。
# リンクしようかと思ったけど Edosson さんの示してくれたやつがあったので
# 止めた

メモ帳で改行コードが ■ ↑ になってしまったのは、いわゆる文字化けだと思わ
れます。メモ帳は改行コードとして 0D 0A しか想定されていません。それ以外
の組み合わせの場合は単なるバイナリコードとして処理されてしまいますので、
■ や ↑ として表示されてしまったのだと思います。
秀丸など他のテキストエディタで開いてみると正しく表示されるかもしれません。

# しかし Edosson さんとかぶりまくりんぐ。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-08-24 15:29
こんにちは。

引用:

つまり0Dは■
で、0Aは↑
であるという結果になりました。


たぶん、wfwfangさんは Windows に標準搭載されている メモ帳 で件のファイルを開かれたのだと思いますが、メモ帳 は CR+LF のみを改行として認識します。

CR や LF が奇妙な表示になるのは、エンコーディングの問題ではなく、メモ帳 というソフトに特有の問題だと思います。

件のファイルを例えば Internet Explorer で開くと適切な位置で改行されるのを確認できます。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 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 なども参考に。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-08-24 17:27
見た目に誤魔化されちゃ駄目です。
真実を見つめるんです。

真実は、常に「61 0D 0A 62 61 0D 62 61 0A 62」なんですよ。

#と釣られてみるw
wfwfang
会議室デビュー日: 2006/08/24
投稿数: 9
投稿日時: 2006-08-25 11:56
引用:

ぽぴ王子さんの書き込み (2006-08-24 15:28) より:
こんにちは。

引用:

試しに 0D だけ、あるいは 0A だけならどうなるかを調べたいので、
Stirlingソフトを利用し、下記のバイナリコードを書きました。


“Stirlingソフト”と書かれると、知らない方は何かわかりませんので、バイナリエ
ディタと書くといいですよ。
# 先日ちょうど Stirling を使用したところで良かった。すぐ BZ に戻しちゃったけど。

引用:

そして実際にテキストを開いて、下記の内容を見ました。

a
ba@baAb

(@Aはこの掲示板でうまく表示できません。@は■見たいな符号でそれより少し小さい、Aは↑見たいな符号でそれより少し小さい。)


これも「どんなアプリケーションで開いたか」を正しく書かなければ、他の方には
伝わりません。私の環境ではメモ帳で開いて再現するのを確認しました。

引用:

つまり0Dは■
で、0Aは↑
であるという結果になりました。


これは、メモ帳がたまたまそういった表示になっているだけで、0D が『■』 0A
が『↑』という結論にはならないと思います。

引用:

ところがよく分らないのは、Shift_JISコード表
(http://ash.jp/code/codetbl2.htm)
にはこの二つの記号は存在しません。そもそも0D、0A
というコードもありません。

DOS・WindowsはShift_JISコードじゃないんですか。
しかしこのコード表に定義されていないコードも表示されました。
それはなぜですか。また、なぜ■↑になったんですか。それは
どこで決められたでしょうか。


wfwfangさんが見られたのは “Shift_JISコード表” ですよね。それには改行
コードに代表される、いわゆるコントロールコードが掲載されていなかっただけで
はないでしょうか。この場合は “ASCIIコード表” を見るのが適切かもしれませ
ん。
# リンクしようかと思ったけど Edosson さんの示してくれたやつがあったので
# 止めた

メモ帳で改行コードが ■ ↑ になってしまったのは、いわゆる文字化けだと思わ
れます。メモ帳は改行コードとして 0D 0A しか想定されていません。それ以外
の組み合わせの場合は単なるバイナリコードとして処理されてしまいますので、
■ や ↑ として表示されてしまったのだと思います。
秀丸など他のテキストエディタで開いてみると正しく表示されるかもしれません。

# しかし Edosson さんとかぶりまくりんぐ。




僕の説明不足で申し訳ございません。
ご指摘どうもありがとうございます。



[ メッセージ編集済み 編集者: wfwfang 編集日時 2006-08-25 13:09 ]

スキルアップ/キャリアアップ(JOB@IT)