過去ログ表示


過去ログ 303 を表示

トピック内全 6 記事中の 1 〜 6 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

Firefoxでのみページの一部分が文字化けをする
(#46951) このトピック中1番目の投稿
(環境: WinXP SP3/Safari)

こんにちは。初めて投稿致します。


社内サイトにて、
「Firefoxでのみページの一部分が文字化けをする」
という事象が発生し、原因が分からず質問をさせて頂きました。

IE7,IE6,Google Chrome 2.0では文字化けせずに表示ができております。

なお、「文字化けをする一部分」というのは、
prototype 1.4.0 の new Ajax.Updater()を使って動的にコンテンツを更新しております。


OS:
Windows XP SP3

Firefox:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)


もし有益な情報をお持ちの方かたがいらっしゃいましたら、ご教示頂けますと幸いでございます。
よろしくお願い致します。

Re[1]: Firefoxでのみページの一部分が文字化けをする
(#46953) このトピック中2番目の投稿
(環境: WinVista/Firefox3.0)

> こんにちは。初めて投稿致します。
>
>
> 社内サイトにて、
> 「Firefoxでのみページの一部分が文字化けをする」
> という事象が発生し、原因が分からず質問をさせて頂きました。
>
> IE7,IE6,Google Chrome 2.0では文字化けせずに表示ができております。
>
> なお、「文字化けをする一部分」というのは、
> prototype 1.4.0 の new Ajax.Updater()を使って動的にコンテンツを更新しております。
>
>
> OS:
> Windows XP SP3
>
> Firefox:
> Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)
>
>
> もし有益な情報をお持ちの方かたがいらっしゃいましたら、ご教示頂けますと幸いでございます。
> よろしくお願い致します。
 現時点での Firefox 3.0.x は文字コード ISO-2022 JP の自動認識に失敗します。
 また文字コードとして EUC-JP が使われているサイトの一部でも自動認識に失敗するようです。
 文字コードをきちんと指定していれば文字化けは少なくなると思うのですが。

文字化けの主な原因
・タグの文字コード指定は SHIFT-JIS なのに、EUC-JPでエンコードされている
・文字コード指定がない。
・phpの場合、php.iniの設定で文字コードを指定してしまっている

Re[2]: Firefoxでのみページの一部分が文字化けをする
(#46961) このトピック中3番目の投稿
(環境: WinXP SP3/Safari)

No46953に返信(tooyamaさんの記事)
>>こんにちは。初めて投稿致します。
>>
>>
>>社内サイトにて、
>>「Firefoxでのみページの一部分が文字化けをする」
>>という事象が発生し、原因が分からず質問をさせて頂きました。
>>
>>IE7,IE6,Google Chrome 2.0では文字化けせずに表示ができております。
>>
>>なお、「文字化けをする一部分」というのは、
>>prototype 1.4.0 の new Ajax.Updater()を使って動的にコンテンツを更新しております。
>>
>>
>>OS:
>>Windows XP SP3
>>
>>Firefox:
>>Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)
>>
>>
>>もし有益な情報をお持ちの方かたがいらっしゃいましたら、ご教示頂けますと幸いでございます。
>>よろしくお願い致します。
>  現時点での Firefox 3.0.x は文字コード ISO-2022 JP の自動認識に失敗します。
>  また文字コードとして EUC-JP が使われているサイトの一部でも自動認識に失敗するようです。
>  文字コードをきちんと指定していれば文字化けは少なくなると思うのですが。
>
> 文字化けの主な原因
> ・タグの文字コード指定は SHIFT-JIS なのに、EUC-JPでエンコードされている
> ・文字コード指定がない。
> ・phpの場合、php.iniの設定で文字コードを指定してしまっているWinVista/Firefox3.0

tooyama さん有難うございます。


HTTPヘッダでの文字コード指定がおかしいのかと思い、
****.jspのリクエストに対するレスポンスをキャプチャしました。

HTTPレスポンスヘッダは下のようになっております。

- - - - - - - - - - - - - - - - - - - - - - - - - -
HTTP/1.1, Status Code = 200, URL: ****.jsp
ProtocolVersion: HTTP/1.1
StatusCode: 200, Ok
Reason: OK
Date: Wed, 25 Mar 2009 01:29:27 GMT
Server: Apache-Coyote/1.1
ContentType: text/html;charset=UTF-8
ContentLength: 7540
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
HeaderEnd: CRLF
- - - - - - - - - - - - - - - - - - - - - - - - - -

charset=UTF-8となっており、問題無いように思えるのですが。
なお、ページの文字エンコーディングもUTF-8として判定されております。


文字化けする部分は、
new Ajax.Updater('xxx','****.jsp', { method : 'post', parameters : param });
としてコンテンツを取得しております。


また、Ajax.Updaterでリクエストしている「****.jsp」を
ブラウザから直接見る(アドレスバーにURLを入力し表示する)と文字化けは起こりません。

Re[3]: Firefoxでのみページの一部分が文字化けをする
(#46964) このトピック中4番目の投稿
(環境: WinXP SP3/SeaMonkey1.1)

> 文字化けする部分は、
> new Ajax.Updater('xxx','****.jsp', { method : 'post', parameters : param });
> としてコンテンツを取得しております。

> また、Ajax.Updaterでリクエストしている「****.jsp」を
> ブラウザから直接見る(アドレスバーにURLを入力し表示する)と文字化けは起こりません。

{ method : 'post', parameters : param } の書き方からして、「フォームのポスト」を使用しているように見えます。
Firefoxの下で動いたAjax.Updaterが送ったPOSTデータを、***.jspが正しく解釈できていない(特にcharset)、
あるいは、Firefoxの下で動いたAjax.Updaterが送ったデータが、***.jspが正しく解釈できるデータになっていない(特にcharset)、とかで、
***.jspが返してくるデータがおかしい、としか思えない...

「parm」の中やその他のAjax.Updaterが送るデータの中に、US-ASCII以外の文字が含まれていませんか?
まずは、Firefox 3+Ajax.Updaterの場合のPOSTデータと、その他のブラウザー+Ajax.Updaterの場合のPOSTデータの違いや、
***.jspがFirefoxに返してきているデータの中の、文字化けする部分のバイトコードを調べてみましょう。

Re[4]: Firefoxでのみページの一部分が文字化けをする
(#46970) このトピック中5番目の投稿
(環境: WinXP SP3/Safari)

皆様,様々なご意見有難うございます。

> 「parm」の中やその他のAjax.Updaterが送るデータの中に、US-ASCII以外の文字が含まれていませんか?
> まずは、Firefox 3+Ajax.Updaterの場合のPOSTデータと、その他のブラウザー+Ajax.Updaterの場合のPOSTデータの違いや、
> ***.jspがFirefoxに返してきているデータの中の、文字化けする部分のバイトコードを調べてみましょう。

> 「parm」の中やその他のAjax.Updaterが送るデータの中に、US-ASCII以外の文字が含まれていませんか?
はい。含まれています。

ので、
param = 'keyword=' + <%=java.net.URLEncoder#encode("文字列")%>
としてURLエンコードをし、
***.jsp で keyword = new String(keyword.getBytes("iso-8859-1"));
として復元しています。


対処療法的には、HTTPメソッドをGETにすると問題なく表示することができました。
new Ajax.Updater('xxx','***.jsp', { method : 'get', parameters : param });

postでの場合に、Firefoxでのみ文字化けをします。
new Ajax.Updater('xxx','***.jsp', { method : 'post', parameters : param });


URL長の上限に引っかからないようであれば、
HTTPメソッドをGETにしてやり過ごそうかと考えていますが、

URL長の上限の問題がでれば、
Ajax.Updater(prototype.js:1.4.0)の仕様を確認して行きたいと思います。

Re[5]: Firefoxでのみページの一部分が文字化けをする
(#46986) このトピック中6番目の投稿
(環境: WinXP SP3/SeaMonkey1.1)

> postでの場合に、Firefoxでのみ文字化けをします。

Firefoxが実際にサーバーに送っているPOSTデータはどのようになっていますか?
LiveHTTPHeadersというアドオンで簡単にチェックできます。


このトピックの全ページ / [0]

返信不可


- Child Tree -