ツイート→RSSフィード→ThunderbirdのHTMLソース→ThunderbirdのSubjectのエンコードとデコード [メール投稿]
<title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
— 正己 (@self7777) 2014, 4月 29
このツイートのRSSフィードは次の通り。
<item>
<link>https://twitter.com/self7777/status/461175668827357184</link>
<guid isPermaLink="true">https://twitter.com/self7777/status/461175668827357184</guid>
<pubDate>Wed, 30 Apr 2014 01:10:22 +0900</pubDate>
<title>
&lt;title&gt;について ←ツイートのRSSフィードの&lt;title&gt;タブにhtmlspecialcharsを使ってみた場合のテスト
</title>
<description><![CDATA[
<title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
]]></description>
</item>
<item>
<link>https://twitter.com/self7777/status/461175668827357184</link>
<guid isPermaLink="true">https://twitter.com/self7777/status/461175668827357184</guid>
<pubDate>Wed, 30 Apr 2014 01:10:22 +0900</pubDate>
<title>
&lt;title&gt;について ←ツイートのRSSフィードの&lt;title&gt;タブにhtmlspecialcharsを使ってみた場合のテスト
</title>
<description><![CDATA[
<title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
]]></description>
</item>
<item>
ThunderbirdのHTMLソースは次のように変わる。
From - Wed, 30 Apr 2014 01:10:22 +0900
X-Mozilla-Status: 0041
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:
Date: Wed, 30 Apr 2014 01:10:22 +0900
Message-Id: <https://twitter.com/self7777/status/461175668827357184@localhost.localdomain>
From: RSS (@self7777)
MIME-Version: 1.0
Subject: <title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
Content-Transfer-Encoding: 8bit
Content-Base: https://twitter.com/self7777/status/461175668827357184
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title><title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト</title>
<base href="https://twitter.com/self7777/status/461175668827357184">
</head>
<body id="msgFeedSummaryBody" selected="false">
<title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
</body>
</html>
X-Mozilla-Status: 0041
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:
Date: Wed, 30 Apr 2014 01:10:22 +0900
Message-Id: <https://twitter.com/self7777/status/461175668827357184@localhost.localdomain>
From: RSS (@self7777)
MIME-Version: 1.0
Subject: <title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
Content-Transfer-Encoding: 8bit
Content-Base: https://twitter.com/self7777/status/461175668827357184
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title><title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト</title>
<base href="https://twitter.com/self7777/status/461175668827357184">
</head>
<body id="msgFeedSummaryBody" selected="false">
<title>について ←ツイートのRSSフィードの<title>タブにhtmlspecialcharsを使ってみた場合のテスト
</body>
</html>
ツイートのRSSフィードを作成するプログラムで<title>の所にhtmlspecialcharsを利用した。
PHP: htmlspecialchars - Manual
(PHP 4, PHP 5)
htmlspecialchars ― 特殊文字を HTML エンティティに変換する
ツイートのJSONは特殊文字がHTMLエンティティに変換して届けてくれる。JSONからRSSフィードを作る際に<title>部分だけさらにHTMLエンティティに変換する。具体的には&の所が&になる。<>はJSONで<>となっているが、それをさらに&lt;&gt;にする。ThunderbirdはHTMLソースに変換する際に<title>部分だけデコードする。すると&が&に戻る。&lt;&gt;は<>になる。その自分で<title>部分からThunderbirdはSubjectを作るのだが、その際にさらにデコードして<>が<>になる。
htmlspecialcharsを利用しない場合、Thunderbirdが作ったHTMLソースの<title>部分がHTMLエンティティに変換されてない状態になり、<>が<>のまま表示されて、<title>内からSubjectにする部分を抽出する際にタグの区切りが分からなくって一部しか抽出されない問題が生じたみたい。
これは解決できたかもしれない。→【ThunderbirdのRSSリーダーはエンコードされた<>をデコードして<title>にしてSubject:が変になる:正己の異論・反論(雑感):So-netブログ】