くだすれC++Builder(超初心者用)その4at TECH
くだすれC++Builder(超初心者用)その4 - 暇つぶし2ch721:708
11/06/09 20:15:13.87
>>716
レスどもです。
必要事項は自前でこなせてますので、蛇足的な書込みになりますが、結果を
書込んでおきます。(何方かの役に立つかもしれませんから)

IdTCPでストリーム受信したところ(TCPでは文字コード問題は無い筈ですよね?)
サーバーは Apache で、ブラウザ向けリクエスト
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)"
を送ると、"Content-Disposition" に含まれる 日本語 filename は
ダブルクォート「"」で囲まれた上で、Shift-JISになり、"User-Agent"無し
では、同様に「"」で囲まれた上で UTF-8 でした。

勿論、この動作はサーバーの設定次第だと思いますので、全てが必ずこうだとは
言えません。ただ、たまたま今回相手にするサーバーがこうだったというだけです。

RFCに書かれていたファイルネームについては、「"」を伴わない形でのASCIIコード
のみだった気がしますが(未確認)。

多分 Apache では、メーラー等で用いられてるヘッダーのように、拡大解釈されて
RFC2231 を用いずに「"」で括って、そのまま漢字コードを使用してるんじゃない
でしょうか?

それとも、改定案が出されてて、それに IdHTTPが対応してないとか。

ちなみに、IdHTTPで取得されたfilenameは、どう変換したのかも分からないコードに
なっており、途中の漢字に含まれるコードで全ヘッダ終了とみなされて、それ以降の
ヘッダは無いものとして処理されてしまいます。

ソースを追えば良いんですが・・・面倒なのでヤメマシタ。
IdTCP->IOHandler->ReadLn で読んだ時点で化けてるので、その辺なんですが、TCPでも、
HTTPでも同じクラス、かつ、多言語でとなると、やはりRFC完全準拠が筋だと痛感。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch