dポイントプレゼントキャンペーン実施中!

dat.datの内容はテキストで以下のようになっています
これをloadVariablesで読み込むと
文字化けすることなく表示されるとします
(具体的に書くと長くなりますので以下の文の場合はOKだと考えてください)

scores=100,90,80,70,60,50,40,30,20,10&names=たろう,じろう,いちろう,さぶろう,もんごめり,にしきの,こぶ,猪木,石田,村上

flashで上のデータに若干の変更を加え
cgi経由で保存をすると

scores=100,90,80,70,60,50,45,40,30,20&names=たろう,じろう,いちろう,さぶろう,もんごめり,にしきの,やまだ,こぶ,猪木,石田

となります  

そこで再度 はじめと同じ要領で
読み込んだところ

たろう と 表示されるべきところに 
縺溘m縺・縺倥m縺・縺・■繧阪≧ 
と長ったらしいものが表示されます
ほかのところも 同様です
いったい何が起こっていると考えられるでしょうか?

助けてください!!!

A 回答 (2件)

Jcode::convert(\$buffer, "EUC");


この"EUC"というのは、EUCという(UTF-8やShift_JISとはまた別の)文字コードを指定する、と言う意味です。
別の文字コードを使っているために、今度はまた違う化け方をしているわけです。

というわけで、ここでEUCやUTF-8ではなくShift_JISを指定("EUC"→"sjis"かな)してdat.datを保存し、Flashでの読み込み処理
 System.useCodepage=true
 _root.loadVariables("./dat.dat");
とすれば化けなくなるんじゃないでしょうか?

ちなみに今は動作確認できる場所にいないので、細かい所でミスってたら申し訳ない。
    • good
    • 0
この回答へのお礼

最初にお答えいただいた

UTF-8というコードの文字をShift_JISで読み込んだものです。

を参考に いろいろとためしていたら

文字化けが起こらなくなりました

原因を究明していただいたと

感謝感激です

お礼日時:2004/09/03 03:38

途中で文字コードが変わってます。



縺溘m縺・縺倥m縺・縺・■繧阪≧というのは、UTF-8というコードの文字をShift_JISで読み込んだものです。ちなみに長ったらしいのは、縺溘m縺・縺倥m縺・縺・■繧阪≧が「たろう」だけでなく、「たろう,じろう,さぶろう」まで含んでいるためです。

データ読み込み前に、Flashのスクリプト内で
 System.useCodepage=true(Shift_JISで読み込み)
 System.useCodepage=false(UTF-8で読み込み)
などを実行しておくと読み込み文字コードが変えられます。

ちなみに、具体的にどこを修正すれば正しく動作するかは現在の質問内容だけからでは断言できません(CGI側の問題である可能性もある)。
同じ要領ということですが、dat.datの読み込みは1回目、2回目ともloadVariables("./dat.dat", _root);なんですかね?

この回答への補足

早速の回答ありがとうございます

dat.datの読み込みは1回目、2回目とも
_root.loadVariables("./dat.dat");
で読み込んでいます

開くと 最初に読み込んで

変更を加え 保存をしています

そして F5キーで 更新すると

2回目には おかしなことになっているのです

保存する際に おかしなことになっている可能性もあり

CGIの処理に問題があるのかもしれません

別サイトなどで見てみると 

保存の際に Jcode.pm をつかわないといけない

ようなことが書かれてありましたので

試しましたが 今度は 別の字が出てきてしまいます

ちなみに 一部は省略していますが

use lib "lib";
use Jcode;

if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { $buffer = $ENV{'QUERY_STRING'}; }

$buffer =~ tr/+/ /;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

Jcode::convert(\$buffer, "EUC");

$nm=$buffer;
open(BOY,">dat.dat");
print BOY "$nm";
close(BOY);

と しました

補足日時:2004/09/02 13:54
    • good
    • 0

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