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

改行コード変換のタイミングについて教えてください。

  • 暇なときにでも
  • 質問No.110066
  • 閲覧数257
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 75% (3/4)

改行コード変換のタイミングについて教えてください。
前提:
\n: ラインフィード  \r: キャリッジリターン
UNIX    \n
Winodws   \r\n
MAC     \r

PerlスクリプトによるCGIで、ブラウザに出力します。
このとき、生成するHTMLのFORM要素.INPUT要素.VALUE属性
に変数データを代入しています。
これは、文字列になっており、当初、\nを区切り文字として使用し、
HTMLとなってからJavaScriptでこの区切り文字を頼りに配列化しました。

ところが、MAC環境の方に確認をお願いしたところ、期待通りの動作をして
おらず、調べたところ、\nがすべて\rに変換されていたため、JavaScriptで
\nを探しても見つからなかったということがわかりました。
Windowsも\r\nに変換されています。

この改行コードの変換がなにを基準に、どのタイミングで起きているのかがよくわかりません
スクリプトの文字コードとget要求をしてきたOSを見て、Apacheが行っているのか、
それとも、ブラウザがやっているのか。
はたまた、アプリケーション層に行くまでの下層プロトコルがやっているのか。
判断基準はGETの中にあるのか、出力されたcontent-typeなのか・・・・。
変換がなに依存なのかわからないと、どんなとき変換が起き、どんなときは起こらないのかが
わからないので、このあたりの仕組みの詳細に詳しい方、ご教授願えませんか。
自分でもある程度調べたのですが、環境が限定されますし、ドキュメントもhttpプロトコル
を調べるべきなのか、TCP/IPなのか、HTML(のFORMリクエスト)なのか、httpデーモン
なのか、httpdが動いているUNIXサーバOSなのか、それともIEやNNの仕様を調べる必要があるのか・・・
どこがやっていることなのかわからないもので。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 65% (25/38)

CGIプログラムの中で、改行コード変換を行った上でのお話ですか? それとも、CGIの中で改行コードの変換ロジックを入れていないのでしょうか? <<改行コード変換ロジック>> $val =~ s/\r\n/\n/g; $val =~ s/\r/\n/g; もし、改行コードの変換をされていないのであれば、そのロジックを入れないと正しく動作されないと思います。 変換を行うタイミングは、G ...続きを読む
CGIプログラムの中で、改行コード変換を行った上でのお話ですか?
それとも、CGIの中で改行コードの変換ロジックを入れていないのでしょうか?

<<改行コード変換ロジック>>
$val =~ s/\r\n/\n/g;
$val =~ s/\r/\n/g;

もし、改行コードの変換をされていないのであれば、そのロジックを入れないと正しく動作されないと思います。

変換を行うタイミングは、GET 又は POSTでデータを取得した後、そのデータを変数データとして扱う処理を行うタイミングで良いと思いますが・・・・

「こんな事は当然やった上での話だ!」と思われてしまったら、ごめんなさい。
補足コメント
sight

お礼率 75% (3/4)

ご回答ありがとうございます。説明不足で申し訳ありません。
Perlスクリプト内ではコード変換は行っておりません。
これは、FROMからくる入力データには複数行文字列はないため、当然改行もなく、
必要がないためです。

あくまでも、"出力時"にUNIXサーバ上に保存されているデータを\nを使い連結して
一つのデータとしてHTML出力し、後からJavaScriptで配列化しております。
そのため、UNIXサーバでperlスクリプトが動作して、TCP/IPプロトコルにのっかって
httpでクライアントに送られ、ブラウザがそのデータを取得し、解析される
までの一連の過程の中で起こっている文字コード変換の、タイミングと発生条件が
今回の質問の中心です。
投稿日時 - 2001-07-27 11:37:04
  • 回答No.2
レベル9

ベストアンサー率 65% (25/38)

そう言う事でしたか。。 理解力不足で申し訳ありませんでした。 このコード変換は、サーバーサイドではなく、クライアントサイドで行われます。 IEやNNでの仕様と思って貰えば良いと思います。 ...続きを読む
そう言う事でしたか。。
理解力不足で申し訳ありませんでした。

このコード変換は、サーバーサイドではなく、クライアントサイドで行われます。
IEやNNでの仕様と思って貰えば良いと思います。
補足コメント
sight

お礼率 75% (3/4)

いぇ、こちらこそ、お答えいただきありがとうございます。
再びの補足で申し訳ないのですが、

>このコード変換は、サーバーサイドではなく、クライアントサイドで行われます。
とのことですが、
この仕様についてを実際に確認できるドキュメントなどはどこかに公開されているでしょうか?

また、調べるための方法&ツール(ブラウザのパーサー部が解析する前の通信状態を表示することができるブラウザなど)はないでしょうか?
よろしくお願いします。>皆様
投稿日時 - 2001-07-29 23:19:31
お礼コメント
sight

お礼率 75% (3/4)

とりあえず、締め切ることとします。
実験手法や公式(に近い)情報ソースがわからなかったのは残念ですけど、クライアントサイドで行われる、とおっしゃってくださった方がいたことだけでも大収穫です。
やはり、汎用性を考えると、どこでであれ、自動的に変換解釈が行われないような方法を採った方がいいですね。
どうもありがとうございました。
投稿日時 - 2001-08-01 16:48:03
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ