- ベストアンサー
loadVariablesで読み込んだら文字化けします
- loadVariablesで読み込んだテキストファイルの内容が文字化けする問題が発生しています。
- 具体的な例として、dat.datファイルからloadVariablesで読み込むと、文字化けせずに表示されるはずのデータが正しく表示されません。
- また、flashでデータを変更して保存した後に再度読み込むと、正しく表示されるべきデータが意図しない文字列で表示されます。
- みんなの回答 (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"); とすれば化けなくなるんじゃないでしょうか? ちなみに今は動作確認できる場所にいないので、細かい所でミスってたら申し訳ない。
その他の回答 (1)
- mach999
- ベストアンサー率75% (36/48)
途中で文字コードが変わってます。 縺溘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); と しました
お礼
最初にお答えいただいた UTF-8というコードの文字をShift_JISで読み込んだものです。 を参考に いろいろとためしていたら 文字化けが起こらなくなりました 原因を究明していただいたと 感謝感激です