まいった。(^^;
ActionScript で日本語コード変換でハマってます。
この糞忙しいのに、今日一日を棒に振ってしまったぁぁぁぁぁ・・・
WEB2MEMOで公開されている日本語文字コード変換ライブラリ『Jcode』を使って変換しようと思ってるのだがうまくいかん・・・
例えば、↓こんな感じで、Shift_JIS で書かれている HTML ソースを取ってきて、Shift_JIS→UTF-8 変換を行って表示したいとすると、
import com.web2memo.text.Jcode;
private function startProc():void {
var req:URLRequest = new URLRequest("http://www.exsample.jp/index.html");
var loader:URLLoader = new URLLoader(req);
loader.addEventListener(Event.COMPLETE,loadComp);
}private function loadComp(evt:Event):void{
var loader:URLLoader = evt.target as URLLoader;
var byteArray:ByteArray = new ByteArray();
byteArray.writeMultiByte(loader.data, "shift_jis");var enc:String = Jcode.getInstance().detectEncode(byteArray);
trace("EncCD=" + enc);var src:String = Jcode.getInstance().SJIStoUTF8(byteArray);
trace("Source=" + src);}
・・・で良いのかと思ったら、EncCD は EncCD=Shift_JIS と表示されるけど、src は化け化けで表示される。
Jcode.getInstance().SJIStoUTF8(byteArray) が効いてないということか。
例えば、
<!----- デジタルパンフレット用追加スクリプトここから----->
↓
<!----- ?f?W?^???p???t???b?g?p??A?X?N???v?g?±?±?c?c----->
こんな具合だ。
うーむ・・・わからん。
何かの間違いでたまたまこのブログに流れ着いた識者の方。ぜひご教示くださいませ。(^^;
ちなみに日本語変換が必要だと思ったのは、Shift_JIS や EUC-JP で書かれた「狂った」RSS フィードに対応するため。
でも、そもそも、RSS フィードを Shift_JIS や EUC-JP で書くのがおかしいんだから、本当は対応しなくても良いんだよな。
ちゅーことで、水曜日中には動く形にしたいので、取りあえず UTF-8 のみ対応の形で良いだろう。(それで、99.9% の RSS フィードは読めるはずだから)
ActionScript用日本語文字コード変換ライブラリ『Jcode』
http://web2memo.blog120.fc2.com/blog-entry-221.html
はじめまして
私も同じ悩みを抱えております。
ActionScriptがさっぱりわかりません。
'ByteArray'をロードできませんでした。
と出て ByteArray すら使えません。
日本語を使える解決策が見つかれましたら
是非、情報公開をお願い致します。
ちなみに
以下、ソースの
menu_label:Array
の中身をボタンとして表示するように作られているのですが
配列の中身が半角英数だと無事に表示されます。
漢字だと表示されません。
下記の場合、
「製品」だけが表示されません。
どうすれば日本語が表示されるようになるのでしょうか?
import com.web2memo.text.Jcode;
menu_item_group.menu_item._visible = false;
var menu_label:Array = new Array("製品", "Biography", "Services", "Portfolio", "Clients", "Contact");
var total:Number = menu_label.length;
var distance_y:Number = 34;
var i:Number = 0;
for( ; i < total; i++ )
{
menu_item_group.menu_item.duplicateMovieClip("menu_item"+i, i);
menu_item_group["menu_item"+i].over = true;
menu_item_group["menu_item"+i].item_label = menu_label[i];
menu_item_group["menu_item"+i].item_no = i;
menu_item_group["menu_item"+i]._y = i * distance_y;
trace("Array=" + menu_item_group["menu_item"+i].item_label);
}
function change_page(no):Void
{
for( i = 0; i < total; i++ )
{
menu_item_group["menu_item"+i].flashmo_button._visible = true;
menu_item_group["menu_item"+i].over = true;
menu_item_group["menu_item"+i].flashmo_button.onRollOver = function()
{
this._parent.over = false;
}
menu_item_group["menu_item"+i].flashmo_button.onRollOut = menu_item_group["menu_item"+i].flashmo_button.onDragOut = function()
{
this._parent.over = true;
}
menu_item_group["menu_item"+i].flashmo_button.onRelease = function()
{
_root.change_page(this._parent.item_no);
}
menu_item_group["menu_item"+i].onEnterFrame = function()
{
if( this.over == true ) this.prevFrame();
else this.nextFrame();
}
}
delete menu_item_group["menu_item"+no].flashmo_button.onRollOut;
menu_item_group["menu_item"+no].flashmo_button._visible = false;
menu_item_group["menu_item"+no].over = false;
_root.page = no + 1;
_root.play();
}
change_page(0); // the default page on load
こんにちわ。
僕もまだ勉強中なのでよくわかりませんが、これって
http://www.webdesignmo.com/blog/2008/07/14/editing-buttons-in-flash-templates/
のサンプルコードですか?
Flash CS4 かなんかで作られてるんですよね?
僕は AIR ガジェットの開発を Flex Builder 3 でやってるだけなので、Flash CS4 とかの開発手順はわかりませんが、これって、ボタンのラベルで使用するフォントに、日本語フォントではない、例えば Times New Roman とかを指定されているだけではないでしょうか?
日本語フォントを指定すれば表示されませんか?
JCodeで同じように悩んでいましたが
import flash.system.System;
System.useCodePage = true;
とすれば、解決しました。
コメント、ありがとうございます。
ちょっと今、ActionScript 案件をやってないので、今度さわる時に試してみて、結果はまたここに書きますです。:-)
shinoda様
メニューの日本語変換は解決いたしましたでしょうか?
私も同じ様に悩んでいます。
解決策ございましたら、教えてください。
どうぞよろしくお願いいたします。