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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     unescapeについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kamikinayu
Åê¹ÆNo.33165
投稿日時: 2007-4-25 15:57
新米
居住地: メモリ
投稿: 11
使用環境:
Re: unescapeについて
レスをみて疑問になった事があります。

Shift-JISで文字をescapeしてunescapeしてUTF-8にした場合は事業部と表示されます。
Shift-JISで文字をescapeしてUTF-8にしてunescapeした場合は文字化が起こります。
unescapeするときはescapeする時の文字コードと一緒じゃなければいけないとわかったんですが、
具体的に何故、だめなのかが分かりません。
よろしかったら教えていただけないでしょうか、よろしくお願いします。

//文字化け、文字化けしないときのソース

//文字化けしない
System.useCodepage = true;
sjisEnc = escape("事業部");
utfStr = unescape(sjisEnc);
System.useCodepage = false;
trace(utfStr); //事業部
System.useCodepage = true;

//文字化けする
System.useCodepage = true;
sjisEnc = escape("事業部");
System.useCodepage = false;
utfStr = unescape(sjisEnc);
trace(utfStr); //Ž–‹ƕ”(文字化け)
System.useCodepage = true;
ひろゆき
Åê¹ÆNo.33170
投稿日時: 2007-4-25 18:11
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: unescapeについて
Shift_JIS での URLエンコード
System.useCodepage = true;
trace(escape("事業部"));
// %8E%96%8B%C6%95%94

これを正常にもどすには、
Shift_JIS での URLデコード
System.useCodepage = true;
trace(unescape("%8E%96%8B%C6%95%94"));
// 事業部

ところが、UTF-8 で URLデコード すると、
System.useCodepage = false;
trace(unescape("%8E%96%8B%C6%95%94"));
// 文字化け

つまり、
System.useCodepage = true;

   事業部
escape↓↑ unescape
%8E%96%8B%C6%95%94
分かりやすく言えば、暗号解読表A を用いて、
事業部という文字を%8E%96%8B%C6%95%94という暗号に
変換したり、もどしたりしている。


UTF-8 での URLエンコード
System.useCodepage = false;
trace(escape("事業部"));
// %E4%BA%8B%E6%A5%AD%E9%83%A8

これを正常にもどすには、
UTF-8 での URLデコード
System.useCodepage = false;
trace(unescape("%E4%BA%8B%E6%A5%AD%E9%83%A8"));
// 事業部

ところが、Shift_JIS で URLデコード すると、
System.useCodepage = true;
trace(unescape("%E4%BA%8B%E6%A5%AD%E9%83%A8"));
// 文字化け

つまり、
System.useCodepage = false;

   事業部
escape↓↑ unescape
%E4%BA%8B%E6%A5%AD%E9%83%A8
分かりやすく言えば、暗号解読表B を用いて、
事業部という文字を%E4%BA%8B%E6%A5%AD%E9%83%A8という暗号に
変換したり、もどしたりしている。



System.useCodepage = true;
sjisEnc = escape("事業部");
System.useCodepage = false;
utfStr = unescape(sjisEnc);
trace(utfStr);

暗号解読表A を用いて、
事業部という文字を%8E%96%8B%C6%95%94に変換した後、
暗号解読表B を用いて、
元にもどそうとしても、事業部という文字には戻らず、文字化けする。


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

kamikinayu
Åê¹ÆNo.33177
投稿日時: 2007-4-26 10:29
新米
居住地: メモリ
投稿: 11
使用環境:
Re: unescapeについて
分かりやすい返答ありがとうございましたぁ。

プログラムも何かにたとえて表現することは
とても大切だなと感じました。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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