文字化けらへん:はてなアイデアに出すべきかどうか(提出済み)/追記20070525

以下は、一部機種依存文字を使っています。

気づいたところ1

http://d.hatena.ne.jp/frain/20050811/1123738114 とそのコメント。

# nobody 『[暇な人] とりいそぎの回答ですいません。
以下、文字化け有りを×、無しを○で示します。
(1) × タイトル(Agatis Byrjun)とアーティスト欄(Sigur Ros
(2) × タイトル(Manana)
(3) ○ タイトル(徹底解明 草磲剛―ぼくの生きる道)
  → たぶん”なぎ”の字なんでしょうけど、化けてません。
  → トラックバック欄(1件あり)は化けていますが、本題とは関係なさそうなので。

環境は WinXP(SP2)+Firefox 1.0.6 です。』

# nobody 『画像も掲載しました。http://f.hatena.ne.jp/nobody/20050811145533 です。
frainさんの画像と見比べると、IEFirefoxとで、ちょっと化けかたが違ってるような感じかなあと思いました。』

# frain 『ふむふむ、ありがとうございます。全然違って見えてるみたいですね…。ちなみに、ここのコメント欄はこう見えてます。
http://f.hatena.ne.jp/frain/20050811150115

# frain 『というか、無体さんの画像を見てると文字化けじゃないような気もして来た。
とりあえず帰ったらXP+IEとか、NetFrontとかで見てみます。』

# toinami 『暇な人その2です。いや暇じゃないですが…

firefoxでは化けません。IEでは化けます。(Windows2000,XP)

(仮定1)Amazonの[元データ]はおそらくUnicode
(前提1)Amazon日本語ページはSift_JIS
(前提2)はてなの各ページはEUC-JP

・frainさんが「化けている」というのは、アクセント記号付文字とか「草なぎ」の「草薙」ではない方の「なぎ」とかの文字。
・上記文字は、「いわゆる機種依存文字」に近い物となる。厳密には、JIS X 0208には無い、JIS X 0212(JIS補助漢字)には有る。
EUC-JPで全角文字などは一般的に2バイトだと思いこまれている (*1)
・「Unicodeに有って、JIS X 0208に無くJIS X 0212に有る文字」の場合、Uicode→EUC-JPへの変換で、3バイトのコードに変換される(実装が多い)。JISの規定に従えばそうなる。
(参考)http://beta.g.hatena.ne.jp/naka64/20050728#p1 とかと同じ状況だと思われるので、naka64さんでも召喚してみると解説がもらえるかもしれない。

(*1) Windows上のプログラムは、かなり「EUC-JPは2バイト固定」と言う認識で作られている物が多い。IEもしかり。
よって3バイトEUCを解釈できずに、文字化けする、と想定。
とか。』

# frain 『解説ありがとうございます。大体は理解しました。(ってか、良く考えたら丁度今の仕事でJIS X 0208にない文字には悩まされてるよ…)
で、これははてなに対応してもらうべき事象なのか、ユーザーがIEなんかを使ってるのが悪いのか…。どうなんでしょうね?』

# toinami 『あくまで上記想定が正解としての話ですが。

IEを捨て、っていうのは現実解ではないので……
http://i.hatena.ne.jp/idea/902 から派生させて何かアイデア登録しますかねー……。UnicodeEUC-JPで3バイト文字になったら文字参照に変換してほしい、とか。無理臭いなぁ……。』

*
「「Unicodeに有って、JIS X 0208に無くJIS X 0212に有る文字」の場合、Uicode→EUC-JPへの変換で、3バイトのコードに変換される(実装が多い)」って書いたけど、Perl+Encode.pm と Java位な物か?
文字変換モジュールのiconv(libiconv)は駄目。
*
おまけ。
Amazon日本語ページで文字化けしないのは、(仮定として)Windows上のWebアプリかなにか(ASP?)で変換しているからではないだろうか。
Win32APIでやる限り、アクセント記号付き文字などは、Shift_JISに変換する際に「アクセント記号のない普通の英字」に変換される、と言うことを見たことがある。どころか©ですら「C」に変換される(苦笑)。
「磲」は、機種依存文字機種依存文字なりにCP932として、そこに。Windowsのコードページなので本来はページをShift_JISじゃなくWindows-31Jとして出力すべきなのだろうけど。

id:naka64さん経由、同問題のテストと hatenadiaryへのトラバ

上記でも挙げたけれど、さかのぼってみると半年以上前からそういうテストしてたっぽい。
http://d.hatena.ne.jp/naka64/20050110/

SS2(0x8E) や SS3(0x8F)使わないと呼び出せないとか、JIS X 0213にしかない文字とかは、数値実体参照として送り出すことも考えてはいかがでしょうか。>d:id:hatenadiary殿。

http://d.hatena.ne.jp/keyword/Wei%8f%a9%ce?kid=86177&mode=edit#c

http://beta.g.hatena.ne.jp/naka64/20050728#p1

http://beta.g.hatena.ne.jp/keyword/%e8%98%90%e5%9c%92
http://d.hatena.ne.jp/keyword/%8f%da%a7%b1%e0

影響を受けるところ1

UnicodeからEUC-JPに変換がかかるところ全て。ただし、3バイトのEUC-JPに変換されるような文字を使っているところに限られる。

  • UTF-8などで書かれたページ(以下Uページ)をアンテナでチェック
  • Uページからのトラックバック,トラックバックモジュールでの表示タイトル
  • [URL〜:title]でUページのタイトル取得した場合、g:id:〜:title, idea:x:title など、diary以外ページならほぼ何でもtitle付けると影響がある、場合がある
  • 引用モジュール(p,bq)でUページから引用した場合
  • hoturlモジュールでtitle指定した場合
  • rssモジュールで表示される内容
  • Amazonから受けるASINページの内容
    • 上記が既に3バイトEUCになっているのであれば、asin記法でdetail,title付きでタイトルなどが表示される場合
  • 人力検索で回答に記載されたURLから取得したタイトル

これら全てで、IEを含む3バイトのEUCコードを認識しないUA(ブラウザ)では文字化けする恐れがある、と。

影響を受けるところ1.5

上記でメールを受けるところ。Unicodeからiso-2022-jpに変換がかかるところ。

などはメールでも通知が来るため、文字化ける。

気づいたところ2

・コメント文面に"〜"とか使うと文字コードの影響があるのか、コメント送った後で手元に届いた送信確認メールには

"\x{ff5e}"

と書かれる。

とりあえず手元で某家族あてに送って確認してみましたが、「〜」は「??」になってました。送った方も送られた方も。ついでに草「磲」もやってみましたが、こちらも文字化け。「草え勅剛」とかでメール来ました。
[16日追記]「草え勅剛」ですが、「え勅」の前には「ESC $ (」が入っているので、iso-2022-jp-2 (JIS X 0212使用)になっている感じ。

「〜」に関していえば、idea:902を挙げ、http://d.hatena.ne.jp/toinami/20050620/p1で説明してありますが、やっぱり人気がない……。わかりにくいよなぁ……。(説明も1/3程度Hatenabarの挙動を合わせたネタですし)

影響を受けるところ2

UnicodeからEUC-JPに変換がかかるところ全て。主に影響を受ける文字は「〜」「−」など。Unicode(UTF-8)で「〜」をウィンドウズユーザが普通に入力した場合に、はてな側のEUCページで文字化けが起こりうる。

  • UTF-8などで書かれたページ(以下Uページ)をアンテナでチェック
  • Uページからのトラックバック,トラックバックモジュールでの表示タイトル
  • [URL〜:title]でUページのタイトル取得した場合、g:id:〜:title, idea:x:title など、diary以外ページならほぼ何でもtitle付けると影響がある、場合がある
  • 引用モジュール(p,bq)でUページから引用した場合
  • hoturlモジュールでtitle指定した場合
  • rssモジュールで表示される内容
  • 人力検索で回答に記載されたURLから取得したタイトル

って、「影響を受けるところ1」からAmazon分を抜いただけ。
また、メールで通知される部分も化ける。

など。
ポイント送信画面「https://www.hatena.ne.jp/sslsendpoint」は、文字コードEUC-JPなので、コメントに「〜」を書いても化けないはず。

影響を受けるところ2.5

1.5+α。メール通知は他にもあった。RSSフィードの更新通知メールなんて物もあるのか……。
idea:4329 はてなアイデア
これはしようがない。JIS X 0208に存在しない文字(「(株)」一文字の物とか)、を指定されても、JIS(iso-20220-jp)に変換しようがないので化ける。「〜」は上記同様なので、本来は化けて欲しくないが、(Windowsユーザが入力した「〜」は)化けると思われる。
*
idea:x:title なので化けた。予定通りだorz

出すとしたらどういうアイデアになるか

  • [気づいた点1]:3バイトEUCなど
    • naka64さんの書いているように、
      • 3バイトEUCになった際の先頭バイトを見て1バイト目が○なら数値文字参照にする。
      • 根本的に変換できない場合も数値文字参照にする。
  • [気づいた点1.5]:上記に対するメール通知
    • あきらめるしかない?
  • [気づいた点2]:〜に対する処理
    • 基本は idea:902。出来なければ上記1と同じで「根本的に変換できない場合」に該当して文字参照に。
    • メール通知における「〜」はidea:902が対応できれば終わり。文字参照にする場合は……困るな。
  • [気づいた点2.5]:RSSに対するメール通知
    • 「〜」以外は、あきらめるしかない?


全然まとまっていない。85文字で説明するには難しい。(コメントだらけにするのもいやらしい)

  • 対象:はてな全般
  • Unicodeのページから文字を取得する各サービス(ダイアリ(含むasinページ)、アンテナ)で、EUC-JPに変換できない文字および3バイトEUCになる文字は数値文字参照にしてほしい」 (76文字扱い)

と、言ったところか……?

*
Perl+Encode.pm使っているとして、本当に対処できる物なのかは不明。
イデアに出すのはもう少し考えます。

と言う辺りをトラックバックしてみまくってみます

順不同、と言うか、上記で言及順
id:frain さん
id:nobody さん(frainさんのコメント中)
id:naka64 さん
id:another さん(naka64さんのコメント経由でなんとなく)
id:crowdeer さん
id:garyo さん
*
ブックマーク経由

2005年08月15日 nobody 『 文字コードらへん. はてなdiary usersさんで文字codeに詳しいかたとしては水野貴明さんとか風間一洋さんとかも。』

いやマジで? 召喚要請?
*
nobodyさんがブックマークしてくれると集客効果が大きい(謎)ので、最初からアイデアだしとけば良かった。内容如何に関わらず1000までは達せたかも(そう言う問題か?)
ある程度の人は一度見ればもう次はこないだろうから、もう今更書いてもそれほど見てくれないよなぁ……。

追記(24:00頃)

フランス語コメント文字化け問題
http://i.hatena.ne.jp/idea/1649
http://i.hatena.ne.jp/idea/2136
も同様か?
Firefoxなら3バイトEUC直で書き込めるので化けないが、IEでは書けない、書かれていても化ける、とか。
*
あと、あまりに基本的な文字化け(「いわゆる機種依存文字」をいわゆらない機種(何)で見た時とか、対応するUnicodeフォントがないのに数値文字参照でそれっぽい文字(ハングルとかアラビア語とか)を表示しようとした時とか)は、ここでは気にしていません。

[8/17追記]

idea:5183として提出

[2007/5/25追記]

また再燃してきた?
はてなダイアリーで欧州文字が表示できるのは国際化なのか? - in between days
(多分一部で同じ話だと思う)