トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   サーバ関連【CGI・FCS・XMLSocket etc】
     一部文字化けするのは
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
piemaru
Åê¹ÆNo.33108
投稿日時: 2007-4-23 16:39
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
一部文字化けするのは
現在、Flash(ver8以上)とajaxとの連携するものを作っています。
WindowsXP、IE6と環境は限定されています。

loadVarsで、データを取得しているのですが、日本語データが一部だけ文字化けしてしまいます。
たとえば、
「指定された条件」が「\定された条件」
「データ」が「Afータ」
というような具合です。

ajax側に問題があるのか、Flash側に問題があるのかわからず困っています。(私はFlash側の制作のみに関わっています)

とりあえず、検証用にloadVarsで取得したデータを、
loadTxt = unescape(this.toString());
というように表示してみましたが、文字化けしていました。

ajax開発側の言い分では、
Flash送信直前のデータを見ると文字化けしていない
ということなのです。

こういった場合の思い当たることや、良い検証方法、解決策などございますでしょうか。
よろしくお願いいたします。


----------------
PIEMARU”(  ´  ▽  `  )ノ”

ひろゆき
Åê¹ÆNo.33112
投稿日時: 2007-4-23 20:39
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 一部文字化けするのは
引用:
piemaruさんは書きました:
こういった場合の思い当たることや、良い検証方法、解決策などございますでしょうか。
よろしくお願いいたします。

これだけの情報だけで、ピンと来そうな問題であればよいですが、
そうでない場合には、レスはつきづらいように思います。

もっと具体的な情報を示される方が良いように思います。
文字コードがどうなっているのかも分かりませんし、
ajax側、Flash側のスクリプトについても、
どのようなものなのか、不明確ですし。
LoadVarsで取得したデータ」というもの自体、
どのように取得されたものかも不明ですよね?


unescapeについて
LoadVars/load.VariablesでのURLエンコード
あたりが参考になりそうな感じではありますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

piemaru
Åê¹ÆNo.33114
投稿日時: 2007-4-23 22:21
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
Re: 一部文字化けするのは
ひろゆきさん、アドバイスありがとうございます。
私の中でも、どれが必要な情報なのか、整理し切れておらず大変少ない情報になってしまっていました。

まず、文字コードは、SHIFT-JISです。

Flash側では、1フレーム目1番最初に
System.useCodepage = true;

と記述してあります。

以下のようにclassを作り
class sendLoad extends LoadVars {
	var ScriptID:String;
	function sendLoad(scrID:String) {
		ScriptID = scrID;
	}
	function sendData() {
		this.onLoad = function(sucess) {
		    mc.gotoAndPlay(okFrame);
	             //受信したテキストを表示(デバッグ用)
	             _global.myStage.loadTxt = unescape(this.toString());
                   }
		this.sendAndLoad(myStage.href, this);
         }
}

次のように生成実行しています。
var myAjax01:sendLoad = new sendLoad("ajax01");
myAjax01.sendData();


このときの
global.myStage.loadTxt = unescape(this.toString());
この時点で、すでに文字化けは起きています。

AJAX側の詳細はよくはわからないのですが、
Urlencodeで、SHIFT-JISエンコードをして、送っているようです。
変数=値&変数=値&変数=値
という形で送られてきます。

その送られてきた値が日本語だった場合、一部だけが文字化けしてしまうのです。

ひろゆきさんが貼ってくださいましたリンク先の事象と、これは同じでしょうか?
SHIFT-JISでは、ダメなのでしょうか?


----------------
PIEMARU”(  ´  ▽  `  )ノ”

piemaru
Åê¹ÆNo.33117
投稿日時: 2007-4-23 23:26
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
Re: 一部文字化けするのは
ひろゆきさんが、貼ってくださいましたリンク先の
LoadVars/load.VariablesでのURLエンコード
こちらの、下から2番目のtnagataさんのやっていらしたテストを試してみました。

引用:
1.Flash8の[編集]⇒[環境設定]で環境設定ダイアログを開く
  [カテゴリ]で”ActionScript”を選択して
  [開く/読み込み]を”デフォルトエンコーディング”
  [保存/書き出し]を”デフォルトエンコーディング”
  (この手順が必須かどうか自信ないです)

2.Frame1に

System.useCodepage=true;trace(encode("こんにちは"));

と入力する

3.ムービープレビューを実行して[出力]パネルから
  traceした文をコピー

4.エディターで"shiftjis.txt"を作成して3でコピーした文字列を
  貼り付けして、SHIFT-JISエンコードで保存

&test=%82%B1%82%F1%82%C9%82%BF%82%CD


5.以下のコードで"shiftjis.txt"を読み取る

System.useCodepage=true;
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(isSuccess:Boolean){
    if ( isSuccess )    {
        trace(this.test);
    }
}
my_lv.load("shiftjis.txt");



こちらです。
「こんにちは」は問題なくでましたが、色々試してみるとポロポロ文字化けしてしまいました。

「指定されたデータ」は「w定されたfータ」となりました。
回避するには、コードを変えるしかないでしょうか・・・?


----------------
PIEMARU”(  ´  ▽  `  )ノ”

ひろゆき
Åê¹ÆNo.33119
投稿日時: 2007-4-23 23:41
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 一部文字化けするのは
引用:
私の中でも、どれが必要な情報なのか、整理し切れておらず大変少ない情報になってしまっていました。

制作されているものそのままを使おうとするからでしょう。

まず、こういうものを検証するには、シンプルなものを作り、テストすべきです。
でなければ、mc, myStage, loadTxt が一体何を指すものか不明なものを残したまま、
回答者に推測をさせることになりませんか?


unescapeについて

なおきさんが
引用:
Shift_JISでURLエンコードしたものだけが引っかかるんですよね。
と書かれているので、
System.useCodepage = true;
trace(escape("指定された条件"));
trace(escape("データ"));
にて、生成。

テキストファイル(data.txt) Shift-JISで保存
&str1=%8Ew%92%E8%82%B3%82%EA%82%BD%8F%F0%8C%8F&
&str2=%83f%81%5B%83%5E&
を用意。

_root に、テキストフィールド(インスタンス名: my_txt) を配置。

(1) テスト1
_root 第1フレームに
System.useCodepage = true;
var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean):Void {
	if (success) {
		my_txt.text = this.str1 + newline;
		my_txt.text +=  unescape(this.str1) + newline;
		my_txt.text += "========" + newline;
		my_txt.text += this.str2+ newline;
		my_txt.text += unescape(this.str2) + newline;
	}
};
my_lv.load("data.txt");
と記述。

LoadVars/load.VariablesでのURLエンコード

Shift_JIS で urlencode されたものをLoadVars.onLoad で受ける取る場合に、
文字化けするのがバグなのだということなのであれば、

(2) テスト2
System.useCodepage = true;
var my_lv:LoadVars = new LoadVars();
my_lv.onData = function(src:String):Void {
	if (src) {
		var vars:Array = src.split("&");
		for (var n:String in vars) {
			var val:Array = vars[n].split("=");
			if (val[0] != undefined && val[1] != undefined) {
					this[val[0]] = val[1];
			}
		}
		my_txt.text = this.str1 + newline;
		my_txt.text += unescape(this.str1) + newline;;
		my_txt.text += "========" + newline;
		my_txt.text += this.str2 + newline;;
		my_txt.text += unescape(this.str2) + newline;;
	}
};
my_lv.load("data.txt");
と記述。

サンプル


----------------
質問する際は、回答者に具体的な情報を与えてください。

piemaru
Åê¹ÆNo.33121
投稿日時: 2007-4-24 0:25
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
Re: 一部文字化けするのは
>ひろゆきさん
つなたない情報ですのに、ご回答ありがとうございます。

テスト(2)の方法でなら、うまくいきそうですので、
こちらを使わせていただこうと思います。

これは、onDataでとらないとエンコードされたデータが正しく取れない、ということなのでしょうか?

onLoadでは、エンコードの一部が欠けた状態でしたので・・・。

なにはともあれ、解決の糸口がつかめました。
ありがとうございました!


----------------
PIEMARU”(  ´  ▽  `  )ノ”

ひろゆき
Åê¹ÆNo.33122
投稿日時: 2007-4-24 0:43
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 一部文字化けするのは
引用:
piemaruさんは書きました:
これは、onDataでとらないとエンコードされたデータが正しく取れない、ということなのでしょうか?

解答だけを探していませんか?
リンク先の記事はお読みになっておられないのでしょうか?

引用:
Shift_JIS で urlencode されたものをLoadVars.onLoad で受ける取る場合に、
文字化けするのがバグなのだということ
なのであれば、


LoadVars unescape」でフォーラム内を検索してみましょう
#「すべて表示」で、たくさん表示されます。

Shift-JIS + onLoad で URLエンコードされた文字がデコードされない不具合
などのスレッドもありますね。


----------------
質問する際は、回答者に具体的な情報を与えてください。

piemaru
Åê¹ÆNo.33123
投稿日時: 2007-4-24 2:33
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
Re: 一部文字化けするのは
重ね重ね、ありがとうございます。

気が焦り、検索など不十分で、大変失礼いたしました。
以後、気をつけたいと思います。
ありがとうございました。


----------------
PIEMARU”(  ´  ▽  `  )ノ”

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops