ソフトバンクの絵文字も実体参照で書ける件について

ソフトバンク3GC携帯でSSLのURLを直打ちアクセスすると絵文字が化ける件について色々調べたのでメモ。

現象

絵文字をWebコードで書いたコンテンツをhttpsで見る際、3GC携帯でURLをブラウザに直接入力してアクセスすると絵文字が化ける。3GC以前のW型端末などでは発生せず、また3GCでもhttpの場合はURL直打ちでも化けない。
また文字化けしていないページからリンクやフォーム送信でhttpsに移動しても化けることはない。

原因

  1. C/P/W 型端末のブラウザはWebページをShift_JISで解釈するが、3GC端末はUTF-8で解釈する。
  2. Shift_JISで記述されたページはSoftBankゲートウェイ(Pull-GW)を通過する際に3GCでも読めるようにUTF-8に変換されるため通常は文字化けしない。
  3. ところがSSLのアドレスをURL直打ちでアクセスした場合のみGWでの変換に何らかの不都合が生じ、結果3GC端末では文字化けする。
  4. URL直打ちでなくリンクやフォームの送信によってhttpsのアドレスに遷移した場合は文字化けは発生しない。
  5. QRコードからのアクセス及びメールに記載のURLをクリックした場合も直打ちとみなされ、URLがhttpsの場合は上記問題が発生する。

回避方法


絵文字をWEBコードではなく、 のように実体参照で書く。テスト用のW端末および3GC端末上では、

  1. URL直打ち/非直打ちを問わず文字化けせず表示できた。
  2. SSL/非SSLを問わず文字化けせず表示できた。
  3. ページエンコーディングShift_JIS/Utf-8を問わず文字化けせず表示できた。
  4. 尚、表示を確認した文字は各端末がサポートする絵文字の境界値を含む。

絵文字を実体参照で記述することについて


絵文字の実体参照値の範囲。

   ~ 
   ~ 
   ~ 
   ~ 
   ~ 
   ~ 

絵文字表記についてはソフトバンクの公式文書にしても他の情報源にしてもWebコードで記述しよう的な空気で書いてあり、実体参照が本当に適正なのかはちょっと自信がない。

ただ公式文書のHTML編46ページに以下の記述がある:

  • P4(2)/W/3GC型端末において数値文字参照によるコード指定が可能
  • 数値文字参照の適用範囲には絵文字を含む

同じくまたHTML編16ページで

  • P5/P6/P7型のHTML解釈はP4(2)と同じである

とあるので、P4(2)/P5/P6/P7/W/3GCの各端末で絵文字を数値実体参照で表記できる、ということになる。逆にサポートしない端末はC2/C3/C4/P4(1)の端末ということになる。
C型なんか普通は今更サポートしないから問題は微妙なラインのP4(1)型。これには P51/SH51/K51/T51/SA51/SH52 が該当する。

現実的な対応案


Webコードによる記述でGWでの変換が有効な場合は表示に問題はなく、 httpsで直アクセスさせる事の方がレアケース。なのでC型やP4(1)型をサポートしたいのであれば従来通りWEBコードで書き、QRコード、メールに記述するリンク等からhttpsのURLをなくす様に配慮する方が有効。
私はこっちを取ることになりそうなので、実体参照に切り替えて実際どうなるかまでは責任は持てない。手元にP型端末ないからテストもできないし。
でも独自拡張のWebコードなんか書くより外字領域の実体参照記述のほうがWEB標準に合ってて気分がいい。