1235798262 【Firefoxアドオン】

自作のコンテキストメニューを作ってみたんですが、label属性に日本語を入れると文字化けしてしまいます。
何かいい方法はありませんか。

var menu1=document.createElement("menuitem");
menu1.setAttribute("label","label");// label と表示される
var menu2=document.createElement("menuitem");
menu2.setAttribute("label","ラベル");//記号の羅列が表示される

回答の条件
  • 1人2回まで
  • 登録:2009/02/28 14:17:43
  • 終了:2009/03/05 12:32:51

回答(3件)

id:m6u No.1

《み》回答回数82ベストアンサー獲得回数62009/02/28 14:51:45

ポイント27pt

 utf-8エンコードで書いてますか?

id:kebo987654

回答ありがとうございます。

s-jisで保存してました。

utf-8にしてみるとエラーが発生しました。

「SyntaxError : illegal character 行: 1」

今度はbomを消してやってみましたが相変わらずです。。。

2009/02/28 15:21:38
id:Marine-Blue No.2

Marine-Blue回答回数237ベストアンサー獲得回数122009/03/01 09:33:26

ポイント27pt

js内で扱う2バイト文字はエスケープすればいけるんじゃないかと思います。

id:kebo987654

回答ありがとうございます。escape("ラベル").replace(/%/g,"\\");// -> \u30E9\u30D9\u30EB

 

menu1.setAttribute("label","\u30E9\u30D9\u30EB");

↑のようにしたらこんな風に表示されてしまいました。。%u30E9%u30D9%u30EB

2009/03/01 16:31:14
id:nyama No.3

のり回答回数86ベストアンサー獲得回数62009/02/28 19:58:58

ポイント27pt

Unicode エスケープしてみたらいかがでしょう。

ラベル であれば、\u30e9\u30d9\u30eb みたいに。

変換するには、以下のページにある unicode.xul が便利です。

http://piro.sakura.ne.jp/latest/blosxom.cgi/mozilla/xul/2005-09-...

id:kebo987654

回答ありがとうございます。

やってみましたが、>>2 のようになってしまいました。

なにがいけないんでしょう

2009/03/01 17:42:32
  • id:m6u
     まさか、表示しようとしているページのエンコードにあわせて適切に用意しておかないといけなかったりするのかなぁ。
     UnicodeじゃなくShift_JISのまま、エスケープして持たせたらどうですかね、「\x83\x89\x83\x78\x83\x8b」で「ラベル」みたいな。
  • id:kebo987654
    はてな初心者なもので、コメント欄に気付かずに返事が遅れてしまいました。すみません。
    せっかくコメントしていただいたのに申し訳ないんですが、解決しました。
    SJISでエスケープすると今度は「x」が表示されるようになってしまったので「u30E9\u30D9\u30EB」を入れなおしたところ、ちゃんと「ラベル」と表示されてました。
    >>2や>>3の時からjsの内容を少し変えたのが原因なのかもしれません。たぶんなにかの入力ミスだったのかな(?)と思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません