こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字化け

以前、私の質問に対する回答のなかで「­」と文字化けしていたものがありました。また、別のかたの回答のなかで「噓」というものがありました(&#;は本来は半角です)。この文字化けは単にブラウザの問題なのでしょうか、それともOKWaveの仕様と関係があるのでしょうか。もしOKWaveの仕様と関係があるのなら、ほかにどのような文字化けが発生するのでしょうか。

ちなみに、私のブラウザはLinuxのFirefoxです。

投稿日時 - 2008-05-23 02:15:53

QNo.4043225

暇なときに回答ください

質問者が選んだベストアンサー

ちょっと誤解させてしまったようなので追記します

はっきり言い切れるほどわかっているわけでは無いのですが…
この場合、proxyは関係ないと思います。
私が見ているのは「教えて!goo」なのですが、御存じの通りおおもとはOKwaveです。この「おおもと」ってどういう意味なのかって事です。
私の使っているGooの他にMSNや日経BPなど多数のサービスがこのOKwaveのQ&Aサイトを提供しています。ここまでは御承知のことだと思います:これをANo.2で「他のゲートウェイ」と表現しました。

利用者が記事(質問なりアンケートなり回答なり)を、いずれかのゲートウェイから投稿するときに、そのサイトで動いているcgiプログラムによってデータが処理されるのだと思います。

そしてその後おおもとであるOKwaveのデータベースに蓄積され、さらに各ゲートウェイはそのデータベースからデータを取り出して閲覧者に見せる処理をしている(HTMLを生成している)ようです。
つまりこのQ&Aのデータは各ゲートウェイにおいて、入るとき(投稿時)にも出るとき(閲覧時)にも加工されているということです。(出るときの加工はQ&Aを見せるために回りに修飾を施したページを作りこむ事ですが)
件のentityは入るときに加工されてしまうので閲覧側の問題ではないと言うのがANo.2の趣旨でした。

ちょっと脱線しましたが、加工は各ゲートウェイサイト上で行われるので、送信時の経路は関係ないはずです。(そもそも中身のデータを改変するproxyなんか使いものになりません)
データベースにデータを集めるときにたくさん入口を用意して、データ形式の一貫性をとるための加工は各入口に分散して処理すれば効率的ですよね。
そしてためておくのは必要な、本文の他に投稿者名や日時などの部分だけ。
各ゲートウェイはルールに沿った加工をしなければならないので、実際の処理自体はどこでも全く同一なはずです。ということは、どこのゲートウェイを使っても、またそこへ接続するのにどんな経路をたどっていてもproxyサーバやらキャッシュサーバやらが挟まっていても、同じ文字列を投稿するのならOKwaveのデータベースに蓄積されるデータには変わりがあってはならないということです。

ゆえに誰がどんな経路で投稿しようとも、変換されるものは必ず変換されるはずです。

繰り返しになりますが、こういうしくみは私がサービスを利用していてこうなっているものだと*勝手に*理解しているもので、実際そうなっている事実を確認したわけではありません。

蛇足ですが、いわゆる「機種依存文字」や表示制御文字など、この件に関してentityに変換されてしまうような文字をWebで使わないようにするのはある種のモラルだかエチケットだか明文化されていないルールだと思います。しかしながら一般的には、自分のパソコンに表示されている文字がそれに該当するかどうかわかる人はそう多くないと思われるので、残念ながら避けて通れないものだと理解しています。そういった「お行儀の悪い文字」をentityに変換してさらにentity表記のまま表示させているこのしくみは、表示はしない(できない)けど元の送信者がどんな表記をしようとしたかが伝わる良い方法だと思います。

投稿日時 - 2008-05-25 02:55:27

お礼

再度の回答ありがとうございます。

tux_the_penguin様のご指摘、たしかにそうだなと思いました。proxyはデータを経由送信しさえすればいいのだから、表記のための加工変換をする必要はないし変換したらおかしなことですね。そして、各入口への処理の分散と処理ルールの統一の説明も非常にわかりやすかったです。

蛇足の「機種依存文字」について、ある程度コンピュータを知っているひとなら丸数字やローマ数字は使うべきではないことを知っているでしょうが、今回のVISTA版「うそ」がentity変換の対象になりうると認識しているひとは少ないような気がします(普通に変換すれば普通に出てくるでしょうし)。だからこそentity変換があるのは助かりますね。

投稿日時 - 2008-05-25 10:16:01

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

まず、
こういった表記法を『文字化け』と呼ぶにはちょっと抵抗があります。
『文字化け』とは何かという定義にもよるんですが。
ちなみにこの&と;に挟まれた文字表記をHTML entityと言います。(日本語訳があったと思いますが思い出せません。。。)

文字がなぜ化けるか、なぜそれが起きるかがわかれば定義(区別?)もしやすい話なので
ーーーーーーーーー
あwせdrftgyふじこ
書いていたらとっても長くなったので、ばっさり削除しました
ーーーーーーーーー
んで、この場合の shy は Soft Hyphen のことです。恥しがってるわけでは無いです(って誰もそんな事言ってませんが)
素直にキーボード上に刻印のあるハイフン(もしくはマイナス記号とも兼用されている文字)を送信すればよかったのに、特殊記号であり標準的なシステムではフォントが用意されていない(と言うよりも本当は、表示できない)文字である「ソフトハイフン」を表記しようとしたのでokwave(か、もしくは他のゲートウェイの)cgiがHTML entityに変換したわけです。(ソフトハイフンとは何かは別の話なので省きます)

このHTML entityは、「&」と「;」の間に挟む部分を件のshyやamp(&)とかlt(<)、gt(>)などの「言葉」を使うやりかたと、それぞれの文字に割り振られた番号を使うやりかたがあります。番号の時はその数字の頭に#を付けることになっています。(さらにその番号を16進数で書く場合は番号をxで始める)例えば & は38番なので#38となります。これを&と;で挟んで & と書きます。 質問文中の22099番のように大きな番号は限られた地域でのみ使われる文字に割り当てられている事が多いようです。
(つまり今私が書いているこれらの『全角文字』全てがそれに含まれます)

ーーーーーー
途中(というか最初の方)を削除したのでちょっとわかりにくい文章になっていますが、結論はこうです。
1: 問題なのは読む側では無く書いて送信した側で、表示困難な文字が使われるとその文字はentityで表現される。
   (『ー』→『&shy;』  便宜的にソフトハイフンを全角ダッシュで書いています)
2: 読む側へ送信されるとき、そのentityの先頭文字である「&」もまたentity化される 
   (『「&」shy』;→『「&amp;」shy;』)
   【なぜなら「&」はentityを表すための特殊記号だから】
3: そういうわけで不具合や事故ではなく、特殊な文字であり(フォントが用意されていなかったり等で)表示困難な文字は予め別の表記法に置き換わっている

質問者さんのおっしゃる「文字化け」が起きているページのソースをみればそうなるようにHTMLが書かれているのがわかると思います。ページ全体のソースは、Firefoxなら ctrl-U で見られます。全部を見てもどこが問題の箇所なのか見つけ出すのがたいへんなので、気になるところだけマウスでなぞって右クリックするとその部分だけのソースが見られる項目があると思います。

HTML entityのレファレンス
http://www.w3.org/TR/REC-html40/sgml/entities.html

「全角文字」のentity一覧 
http://theorem.ca/~mvcorks/cgi-bin/unicode.pl.cgi?start=2E80&end=9FFF

投稿日時 - 2008-05-24 06:12:52

お礼

回答ありがとうございます。

tux_the_penguin様の回答をもとにいろいろ調べてみました。そうしたところ考えられる原因の一つとして、VISTAに搭載されているJIS X 0213:2004に準拠したフォント「メイリオ」がHTML entityや文字化けの問題を起こし得るということが見えてきました。VISTA(JIS X 0213:2004)では表外漢字字体表の「うそ22099」(追加された10文字のうちの一つ)を採用しているため、他のサーバーやパソコンに送信するとHTML entity変換されたり非表示になったりするようです。

今回知りたかったどちら側の問題かについて、OKWaveを見る側ではなくOKWaveもしくは途中に入っている中継地点(プロキシなど?)側ならびに送信者側の問題であるとわかったことは大きな成果です。非常にいい勉強をさせていただきました。ありがとうございました。

素人が出した結論ですので上記の内容や表現に誤りや説明不十分な点があるかもしれませんがご了承ください。

OKWaveの問題か中継地点の問題かはっきりさせたいので、このページをご覧のVISTAを使用のかたに「うそ」の漢字をプロキシを経由せずに直接回答覧に送信していただければ助かります。

投稿日時 - 2008-05-24 14:46:37

二つ目のは私もなります。「うそ」を変換してやるとこうなりますよね?
多分PCの不具合だと思いますが・・・

投稿日時 - 2008-05-23 15:18:03

補足

私の環境では問題なく表示されてます。一方で表示されてもう一方では22099になるということは、見る段階での問題ではなく送信段階での問題のようですね。さしつかえなければ、回答者aagtd様はどのような環境で送信されているのか教えていただけないでしょうか(ブラウザなど)。また、わたしの「嘘」は正しく見えているでしょうか。お手数おかけします。

投稿日時 - 2008-05-23 18:21:18

お礼

回答ありがとうございます。
「うそ」ですか。さっそく打ち込んでみます。



さて、どうなったことやら。結果報告は補足で。

投稿日時 - 2008-05-23 18:19:53

あなたにオススメの質問