【 HP作成質問箱 】

新しい質問は「新規入力」ボタンをクリックしてください。
| Page-1

【HP作成質問箱/詳細】 一覧 / 詳細

  No.11497 携帯でのフォーム送信で文字化けします。
[yo226] [ブラウザ]  10/01/28 (木) 16:11
携帯電話でフォームからメッセージを送信して、CGIで受け取り
そのメッセージをhtmlファイルに書き出して表示しています。
auとDocomoは問題なく表示されていますが、SoftBankの携帯からの送信では、
文字化けすることがあります。
どうすれば、文字化けせずに受け取れるでしょうか。

プログラムソースは
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>メッセージ送信</TITLE>
</HEAD>

<BODY>

<p>
メッセージがあればどうぞ

<FORM method="get" action="./ua2.cgi" target="_blank">
<input type="text" name="message" size="40">
<input type="submit" name="button" value="次へ">
</FORM>
</p>

</BODY>
</HTML>

受け取り側
use CGI;
require"./jcode.pl";

$buffer = new CGI;
$msg = $buffer->param('message');
&jcode'convert(*msg,'sjis');

open(FW, ">>message/message_log2.txt");
print FW "$msg\n\n";
close(FW);

system("nkf -w message/message_log2.txt > message/messagelog2_utf8.txt");
open(FR,"<message/messagelog2_utf8.txt");
@mes01 = <FR>;
close(FR);

print "Content-type:text/html\n\n";
print "<HTML><HEAD>";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
print "<TITLE>test</TITLE>";
print "</HEAD><BODY>";

print "$mes01[0]";

print "</BODY></HTML>

となっています。
よろしくお願いします。
  No.11498 Re:携帯でのフォーム送信で文字化けします。
[atom] [ブラウザ]  10/01/28 (木) 22:03
まず、CGIでの処理の前に..
そもそも送られてきたメッセージの文字コードはどうなってるのでしょうか?

私はすべての携帯の機種を持ってるわけではありませんが、一般的に携帯からは「Shift_JIS」で送信されてくるのではなかったかな?
SoftBankもそうなんでしょうか?

受信したメッセージをコード変換なしで確認した場合どうなってるか?
ここを確認しないとCGIでの処理も決まらないのではないでしょうか?

※追記
nkfは文字コードを自動認識してくれますが、完全ではありません。

SoftBankの文字はどのように記録されているか?
そのファイル(SoftBankの文字だけ)をnkfで変換してみれば何か情報がつかめるかもしれませんね。
  No.11499 Re^2:携帯でのフォーム送信で文字化けします。
[yo226] [ブラウザ]  10/01/29 (金) 14:55
お返事ありがとうございます。

SoftBankの携帯から受け取ったメッセージを書き出したテキストを確認したところ、UTF-8で表示した場合には文字化けせずに見ることができました。
これは、UTF-8で送信されているとみなしてよいのでしょうか?

auの場合だと、UTF-8で表示したとき「って」という文字のみ文字化けしていました。
その他の文字コードだとちゃんと読むことができます。
  No.11500 Re^3:携帯でのフォーム送信で文字化けします。
[atom] [ブラウザ]  10/01/29 (金) 16:21
> SoftBankの携帯から受け取ったメッセージを書き出したテキストを確認したところ、UTF-8で表示した場合には文字化けせずに見ることができました。
> これは、UTF-8で送信されているとみなしてよいのでしょうか?

そうですね、上記の事から言えることは元々「utf-8」で送受信してると思われますね。
そのデータをさらにnkfで自動変換させようとするので文字化けをしてしまうとも言えますね。


> auの場合だと、UTF-8で表示したとき「って」という文字のみ文字化けしていました。
> その他の文字コードだとちゃんと読むことができます。

この確認はエディタによって違います。
私が使用してるエディタ(sakura)では、文字コードを変えても、一部の文字化けが発生するだけでほぼ同じような表示になる場合があります。

Windowsのメモ帳などは全く文字変換をしてくれませんから、文字コードを確認するにはいいかもしれませんね。
また、ブラウザを使って確認する方法もあります。

あと、私が作ってる別のサイト、「SEO対策 & tools」には、文字コード変換してくれるツールがあります。
(完全とは言えませんが)
http://seo.atompro.net/webtoolfree_strcnva_.html

あとは、Vectorや窓の杜などにあるフリーソフトで文字コード変換できるものがありますから、そういったもので文字コードを確認するというような方法があります。


どちらにしても、送受信される文字コードが何か?
自動処理に任せるのか?それとも一部条件判断をさせるのか?
そういった考慮が必要ではないでしょうか?
  No.11501 Re^4:携帯でのフォーム送信で文字化けします。
[yo226] [ブラウザ]  10/01/29 (金) 19:08
くわしくありがとうございます。

自動判別をして変換させる方法をとろうと思います。
文字コードも記載していただいたツール等を使い確認します。
sakuraエディタを使用していました。
そんな機能があるとは知らなかったです。

勉強不足で基本的なこともわからず申し訳ございません。

  No.11502 Re^5:携帯でのフォーム送信で文字化けします。
[atom] [ブラウザ]  10/01/29 (金) 20:48
自動機能はある意味便利なのですが、
裏側で自動処理してるのかどうかが判別できない時があり、
時折、人間の判断ミスを引き起こします。

sakuraはどうも裏側で自動的に文字コード変換を行ってる場合がある。
便利だけれども今回のような場合、誤解を引き起こしてしまう。

要注意です。
  No.11503 Re^6:携帯でのフォーム送信で文字化けします。
[yo226] [ブラウザ]  10/02/01 (月) 14:16
遅くなってすみません。
ありがとうございます。

自動判別をさせようと思うのですが、どうすればいいかよくわからなくなってしまったので、もう少し調べてみます。

ありがとうございました。

また質問した際にはよろしくお願いします。
| Page-1

 一覧 / 詳細


page update:23/11/28 16:31

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom