重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

QNo.2337733 HTMLカテゴリ 「海外掲示板日本語サイトにMacから投稿の文字化けを回避するには?」
http://oshiete.nikkeibp.co.jp/kotaeru.php3?q=233 …
で質問しましたが、回答がないためこちらに質問します。

海外会員制フォーラム日本語サイトにMacから投稿すると????に文字化けするとの質問があります。私はWinユーザですが、WinからはOKです。

サイト       :http://www.celticminded.com/​ (登録制)
日本語サイトのソース: lang="en"   charset=ISO-8859-1
クライアント環境  : Mac OS X 10.4.7  safari
現象 :
・閲覧は問題なく日本語表示される
・エンコード設定や、フォントを「ヒラギノ角ゴ Pro」に変更したところ、入力時の文字化けは直ったが、POST後は文字化けするそうです。
・ソースを見ると、Winからのmessageは "元・・・"なのに、Macからの2バイト文字は全て "???"になってます。

質問
1. Macからの投稿文字化けを回避する方法を教えてください。
  
2. そもそも、変な漢字などに化けるのでなく、???に化けるということは、ソースのcharsetを日本語用に変えるしかないのでしょうか?

3. コードISO-8859-1なのに、WinからのPOSTは問題なく日本語表示されるのは何故ですか?

4. 別ユーザからは、Mac(safari)より数ヶ月前までは日本語POSTできたのに、今は文字化けするとの報告もあります。
  理由は何が考えられるでしょうか?

他のMacユーザの状況はわかりません。
私はMac未経験です。
宜しくお願いします。

A 回答 (3件)

質問の2番ですが、ソースの文字コードを日本語用に変えるよりもUTF-8など、多国語対応した文字コードにされてはいかがでしょうか。



質問の3番ですが、POSTは分かりませんが、日本語が表示されるのはWinのブラウザがISO-8859-1では表示できないと判断して、SJISやUTF-8で表示しているのはないでしょうか。

質問の1番と4番ははっきりとは原因がわからないので、自分の経験と一般論を含めて下記に書きます。

おそらくMacから送信された2バイト文字の文字コードが正しくサーバー側で認識されていないのではないでしょうか。MacのSafariからはおそらくUTF-8又は、そのページのエンコーディングでエンコードされてデータが送信されていると思います。これをサーバー側が正しく認識できているかという点がポイントになると思います。

一般的にWebアプリケーションで文字コードを正しく認識して変換する必要があるところは下記のような場所です。

1.<クライアントから送信>
(a)データはUTF-8またはクライアントの設定に依存したエンコーディング
2. <サーバー受信>
 (b)DBの文字コードに変換する
3. <DB書き込み>
4. <DBから取り出し>
 (c)DBの文字コードからWebページの文字コードへ変換
5. <表示>

(a)については、正しく認識できるかは使用しているサーバー側のプログラミング・スクリプト言語の設定やサーバープログラムの設定によります。

(b)については、DBの設定とサーバー側のプログラムの修正が必要です。

(c)については、Webページの設定、またはプログラムの修正が必要です。

質問の4番ですが、(a), (b), (c)でのいずれかに影響を与えるサーバー側の設定変更または、サーバー側のプログラムのバージョンアップがあったのではないでしょうか。

私も以前、(a), (b), (c)の各ポイントでの文字コードが正しく認識・変換されず、???になったことがありました。

この回答への補足

詳細のご回答誠にありがとうございます。
もっと教えてください。すみません。

> 質問の2番ですが、ソースの文字コードを日本語用に変えるよりもUTF-8など、多国語対応した文字コードにされてはいかがでしょうか。

サーバ・管理者は英国なので、サーバ側charset=ISO-8859-1をUTFなどに変更してもらうのは困難だと考えます。
ISOのままでは、Macからは無理なのでしょうか?

> MacのSafariからはおそらくUTF-8又は、そのページのエンコーディングでエンコードされてデータが送信されていると思います。これをサーバー側が正しく認識できているかという点がポイントになると思います。

クライアント側から対応できることは何でしょうか?
クライアント側のエンコードをISOにして入力・送信するというのは無謀でしょうか?

私はMacを持っていないため、テストできません。
宜しくお願いします。

補足日時:2006/08/16 15:23
    • good
    • 0
この回答へのお礼

ありがとうございます。大変参考になります。
もう少しお願いします。

お礼日時:2006/08/16 15:48

「回答に対するお礼」の欄にご記入頂いた内容で間違いないです。

    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。

お礼日時:2006/08/16 23:14

クライアント側からだとすると、ちょっと良い方法が思いつかないです。

Windowsから送られているのと同じエンコーディングで送信できるプログラムがあれば解決できると思いますが、申し訳ございませんが私は知らないです。Macで動くWebブラウザを数種類試してみるしかないと思います。

また、SafariでISOにして送っても本当にISO-8859-1に変換されてしまったら日本語は送信できません。また、それでもSafariではUTF-8で送信される可能性が高いと思います。

サーバー側の設定が変更できなくとも、CGIなどが変更できれば対処できると思いますが、それも無理だとすると上記のようにブラウザを変更してみるしかないと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
FireFoxで解決したそうです。

文字化け回避の方法として、以下の内容で質問者に回答します。

1. 変な漢字などに化けている場合は、ブラウザのエンコード設定を変更して確認する。

1を対処してもなお化ける場合、または???に化ける場合
サーバ側で変更できる場合、
2. 文字コードをUTF-8に変えてもらう。

3. <クライアントから送信>
  <サーバー受信> DBの文字コードに変換する
  <DB書き込み>
  <DBから取り出し> DBの文字コードからWebページの文字コードへ変換
  <表示>
  の各段階でコードを統一してもらう。

サーバ側変更不可の場合、
4. クライアント側Macのブラウザを変更する。

5. Winで日本語表示される理由は、
  WinのブラウザがISO-8859-1では表示できないと判断して、SJISやUTF-8で表示していると考えられる。

※もし私の認識が違っていたらお手数ですがご指摘下さい。

ご丁寧なご回答誠にありがとうございました。
大変参考、勉強になりました。

お礼日時:2006/08/16 22:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!