- ベストアンサー
=付きUTF-8コードの表示方法
iPhoneのメールのHTMLスクリプトの中で、テキストに当たる部分が=付きのUTF-8コード(のアスキー文字)、例えば、 <p>=EF=BC=A1=.......................</p> の様になっていて、エクスプローラなどで読み込んでもそのまま表示されてしまいます。これを可視化するにはどうすればよいのでしょうか。また、VCの関数でこれを可視化できるものはあるでしょうか。 以上、宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>そこで、このようなものをわざわざ自分で作らなくても、既存のアプリなり、関数なりで処理できないのかと思った次第です。 探してみないことには断言できませんが… おそらく無い…でしょうね。 HTMLでUTF-8などの非ASCIIをquoted-printableエンコードで出力する。 なんていう事態がそもそも普通ではありませんし。 HTMLメールをUTF-8で……というのであれば、MIMEの仕様に沿った形式で出力すべきです。 HTMLメールなら通常はテキスト形式以外に別に添付…みたいな形式でしょうから、html部分は丸ごとbase64とかても可能なのではないですか? 送信側がどう処理しているのか判りませんが。 >しかし、実際には=の直後に改行0x0Aがあったり、</p>の直前に=があったりと、結構処理がめんどくさそうです。 送信側がどういうルールで作成したのか判らないので、 ある程度は試行錯誤…でしょうかね。 =の直後に改行がある。に関しては、改行は無視する処理を追加…でしょう。 htmlである以上、途中にある改行は無視…のハズですから。 # SMTPの仕様では78文字辺りで改行する。というようなものがあったかと。 # リレーしている途中のサーバで強制的に改行された可能性も否定しきれません。 <//p>直前の'='は…無視するか、実際に'='のまま出力するか…のどちらかかと。 quoted-printableエンコードなら'='自体もエンコード対象のハズですが。
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
MIMEのquoted-printableエンコード…でしょうかね。 エンコード方法としては複雑でもないですから、デコード処理自体はそれほど難しくないでしょう。 '='が来たらその後ろ2文字を16進数文字として数値化するだけ。 quoted-printableエンコード以外の場所で'='が来た場合…が問題ですけどね。 まぁ、今回の場合は… ・htmlタグの内側('<'から'>'の間)ではない。 ・<p></p>の間。 とか条件あるでしょうからソレでなんとかできるのではないかと。 デコードした後の文字列の扱いの方が問題かも知れませんが。 # 文字コードとして。 まぁ、今回はUTF-8と確定しているようですから…… デコードしてhtmlファイルにするときに正しくUTF-8で書き出せば良いかと。 # htmlヘッダなどで文字コード指定している場合はそちらもUTF-8にする必要があるでしょうけど。 # <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > とか。
補足
Wr5様 早速のご回答有難うございます。 おっしゃる趣旨は大変よくわかります。実は私もそうしようとしていました。しかし、実際には=の直後に改行0x0Aがあったり、</p>の直前に=があったりと、結構処理がめんどくさそうです。また、<p>の他にもタイトル行などの処理も必要でしょう。そこで、このようなものをわざわざ自分で作らなくても、既存のアプリなり、関数なりで処理できないのかと思った次第です。
お礼
有難うございます。 改行の前後は、例えば、 ...=EF=BC=A1=EF=\n=BC=A2... のようになっているので、=\nを読み飛ばせば良いですね。 文字列を観察しながら、何とか努力して、処理ルーチンを作成してみたいと思います。