1 件の投稿を表示中 (合計 6 個)
  • 作成者
    投稿
  • #7828
    Songmu
    メンバー

    マクロ記述時に、文字コードをutf-8で書く方法はありませんでしょうか?

    utf-8のテキストを編集しているときでも、選択範囲
    Window.document.selection.Text;
    には、文字コードがShift_JISの文字列が入ってしまいます。

    また、アウトプットバーに
    Window.OutputBar.writeln(“hoge”)
    等で出力するときも、Shift_JISに変換しないと文字化けしてしまいます。

    エディタの既定文字コードをutf-8に設定すれば良いのかもしれませんが、
    その方法はありますでしょうか?
    言語の設定等でutf-8を追加する方法が見当たりませんでした。

    #7833
    Yutaka Emura
    キーマスター

    Songmuさんは書きました:
    マクロ記述時に、文字コードをutf-8で書く方法はありませんでしょうか?

    utf-8のテキストを編集しているときでも、選択範囲
    Window.document.selection.Text;
    には、文字コードがShift_JISの文字列が入ってしまいます。

    また、アウトプットバーに
    Window.OutputBar.writeln(“hoge”)
    等で出力するときも、Shift_JISに変換しないと文字化けしてしまいます。

    エディタの既定文字コードをutf-8に設定すれば良いのかもしれませんが、
    その方法はありますでしょうか?
    言語の設定等でutf-8を追加する方法が見当たりませんでした。

    旅行中のためお返事が遅れて申し訳ありません。

    マクロはすべて Unicode の扱いになっています。問題はファイルを保存ときに何のエンコードで保存するかになります。

    document.Encoding = eeEncodingUTF8;

    とすれば、次回保存ときに、UTF-8 で保存されます。試していただけますでしょうか?

    #7842
    Songmu
    メンバー

    お返事ありがとうございました。
    直接、UTF-8を扱えるようになりました。ただ、

    document.Encoding = eeEncodingUTF8;
    Window.OutputBar.Writeln(“東京”);

    のように記述して、UTF-8のファイルで保存して、実行した際
    「譚ア莠ャ」
    のように文字化けして出力されてしまいます。
    Shift_JISにエンコードしないと文字化けしてしまうようです。

    アウトプットバーの文字コードをUTF-8にする方法がありましたら。
    教えていただけないでしょうか?

    #7853
    Yutaka Emura
    キーマスター

    Songmuさんは書きました:
    お返事ありがとうございました。
    直接、UTF-8を扱えるようになりました。ただ、

    document.Encoding = eeEncodingUTF8;
    Window.OutputBar.Writeln(“東京”);

    のように記述して、UTF-8のファイルで保存して、実行した際
    「譚ア莠ャ」
    のように文字化けして出力されてしまいます。
    Shift_JISにエンコードしないと文字化けしてしまうようです。

    アウトプットバーの文字コードをUTF-8にする方法がありましたら。
    教えていただけないでしょうか?

    こちらでは現象が再現できないのですが、EmEditor のバージョンは v8.05 でしょうか?
    アウトプット バーの表示が 「譚ア莠ャ」のように文字化けしてしまうのでしょうか?
    こちらでは、アウトプット バーにも「東京」と表示されています。

    #7863
    Songmu
    メンバー

    お返事ありがとうございます。

    utf8のファイルを「BOM無し」にしていたのですが、jseeファイルを「BOM付き」に
    したところ、きちんと表示されました。ありがとうございました。

    ちなみに、PerlScriptで同様に、BOM付きのutf8で記述したマクロを動かしましたが、
    アウトプットバーには、sjisにEncodeしないと表示されませんでした。

    PerlScriptの話になってしまい恐縮ですが、何か原因がお分かりになれば
    お知らせくだされば幸いです。下記にサンプルコードを記します。

    たびたびすみません。

    #language=”PerlScript”
    use Encode;
    $Window->document->{‘Encoding’} = 65001;
    $Window->OutputBar->Clear();
    $Window->OutputBar->{‘Visible’} = 1;

    #japanese String(utf8)
    my $str = “x{65e5}x{672c}x{8a9e}x{6587}x{5b57}x{5217}”;

    #need encode to Shift_JIS
    #Without this line, character corruption will occur.
    $str = encode(‘sjis’,$str);
    $Window->OutputBar->write($str);

    #7864
    Yutaka Emura
    キーマスター

    Songmuさんは書きました:
    お返事ありがとうございます。

    utf8のファイルを「BOM無し」にしていたのですが、jseeファイルを「BOM付き」に
    したところ、きちんと表示されました。ありがとうございました。

    ちなみに、PerlScriptで同様に、BOM付きのutf8で記述したマクロを動かしましたが、
    アウトプットバーには、sjisにEncodeしないと表示されませんでした。

    PerlScriptの話になってしまい恐縮ですが、何か原因がお分かりになれば
    お知らせくだされば幸いです。下記にサンプルコードを記します。

    たびたびすみません。

    #language=”PerlScript”
    use Encode;
    $Window->document->{‘Encoding’} = 65001;
    $Window->OutputBar->Clear();
    $Window->OutputBar->{‘Visible’} = 1;

    #japanese String(utf8)
    my $str = “x{65e5}x{672c}x{8a9e}x{6587}x{5b57}x{5217}”;

    #need encode to Shift_JIS
    #Without this line, character corruption will occur.
    $str = encode(‘sjis’,$str);
    $Window->OutputBar->write($str);

    マクロの OutputBar オブジェトの write メソッドの引数は、Unicode 文字列であることが前提になっています。write メソッドに限らず、 EmEditor のマクロは、基本的に JavaScript と VBScript で書かれているため、文字列はすべて Unicode が前提になります。したがって、変数の文字コードが Unicode 以外の場合については、正しく動作しないと思います。すべて Unicode で指定していただけると幸いです。

1 件の投稿を表示中 (合計 6 個)
  • このトピックに返信するにはログインしてください。