読書記録ChangeLog

日記内を検索 / / / ランダム RSS

2005-06-01 / freemind flash browser文字化けの原因 /

公開初期にはなかったfreemind flash browserにおいて文字化けが発生する現象
ですが、原因がわかりました。原因は「System.useCodepage = true;」です。

freemind flash browserのソースは現在CVSから取得できます。モジュール名は
flashです。freemind本体のモジュール名はfreemindです。開発言語は
ActionScriptです。今まで存在すら知らなかった言語ですが
java,C#,javascriptがまざった感じでなんとなく処理内容は理解できます。

grep -n System *.as
KeyControler.as:42: System.setClipboard(Node.currentOver.text);
Main.as:56: System.setClipboard(Node.lastOverTxt);
Main.as:73: System.useCodepage = true;

現在公開されているfreemind flash browserにはがノードの情報をクリップボ
ードにコピーする機能があります。この機能は公開初期にはありませんでした。

grep -in system.use *.as
Main.as:73: System.useCodepage = true;

クリップボード処理を行うために上の一行を加えたのが文字化け原因のようです。

対策は3つ考えられる希ガスる。
(1)「クリップボードが使用可能だけど文字化けあり」と「クリップボードが使
用不可だけど文字化けなし」の2通りで使用できるようにしてhtmlファイル内で
fo.addVariable("useClipboard",true);とかパラメータで指定させるようにする。
(2)クリップボードを使用する機能自体たいした機能じゃないのであきらめて削
除してもらう。
(3)通常時はSystem.useCodepage = falseにしておいてSystem.setClipboardを
操作する時だけ一時的にSystem.useCodepage = trueにする。

うまくいくのなら(3)が一番楽かも。というわけで(3)をやってみる。
パッチファイルは
http://dkiroku.com/code/flash.patch.txt
ここからコンパイラを落として
- Motion-Twin
http://www.mtasc.org/
build.xmlを参考にしてコマンドラインからコンパイル。

mtasc.exe visorFreeMind/Main.as -swf visorFreeMind.swf -header 800:600:24

うまくいったみたい。日本語もクリップボードも問題なし。
バグレポートはこれから。

固定リンク [2005-06-01-19] このエントリーをはてなブックマークに追加 MM/memo投稿

[ コメント |

これまでの訪問者は 人です。