◀一般トップへ
  • 5430 Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。
    • 5438 Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。
      • 5442 DANDPとStirlingを使ってみたら?
        • 5446 Re:DANDPとStirlingを使ってみたら?
    • 5448 Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。
    • 5452 Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。
  • [5430] Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。 ろろ 2006年09月19日 20:18

    以下13行は,土木の電子納品SXFのP21形式ファイルのヘッダー部分です。
    ISO-10303-21;
    HEADER;
    FILE_DESCRIPTION(('SCADEC level2 AP202_mode'),
    '2;1');
    FILE_NAME('\X2\30B530AF30E930A830C730A33
    0BF\X0\_model.p21',
    '2006-9-14T7:57:9',
    (''),
    (''),
    'SCADEC_API_Ver3.00',
    '***********************',
    '');
    FILE_SCHEMA(('ASSOCIATIVE_DRAUGHTING'));
    ENDSEC;

    Q.サクラエディタで,以下のケース1),ケース2)のコード変換の対応可能でしょうか。
    ケース1) '\X2\30B530AF30E930A830C730A330BF\X0\_mo
    del.p21' ---> サ ク ラ エ デ ィ タ
    ケース2) サ ク ラ エ デ ィ タ ---> '\X2\30B530AF30E930A830C730A330BF\X0\_mo
    del.p21'

    現在は,ケース2)について,WinJis(フリーウエア)で確認できました。
    ケース1)について,バイナリーエディタでできそうな気がします。
    よろしくお願いします。
    • [5438] Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。 じゅうじ 2006年09月23日 00:48

      ▼ ろろさん
      > Q.サクラエディタで,以下のケース1),ケース2)のコード変換の対応可能でしょうか。
      > ケース1) '\X2\30B530AF30E930A830C730A330BF\X0\_mo
      > del.p21' ---> サ ク ラ エ デ ィ タ
      > ケース2) サ ク ラ エ デ ィ タ ---> '\X2\30B530AF30E930A830C730A330BF\X0\_mo
      > del.p21'
      >
      > 現在は,ケース2)について,WinJis(フリーウエア)で確認できました。
      > ケース1)について,バイナリーエディタでできそうな気がします。

      1)
      バイナリエディタの16進表示で、キーボードから全16進英数文字を入力し、ファイルに保存する。
      サクラエディタを使って、UnicodeBE モードで開く。
       バイナリエディタで、16進入力部分が貼り付け出来ればなお良い。
      2)
      サクラエディタで全角文字を入力し、UnicodeBE でファイルに保存する。
      バイナリエディタを使ってファイルを開き、画面に16進表示する。
       バイナリエディタで、16進表示部分がカット/コピー出来ればなお良い。

      そんなバイナリエディター有るんでしょうか。無かったら作って下さい。
      • [5442] DANDPとStirlingを使ってみたら? 渡辺真 2006年09月24日 08:57

        下記のDANDPの16進部分に、
        http://hp.vector.co.jp/authors/VA020296/

        B530AF30E930A830C730A330BF30
        をペースト(貼り付け)すると、
        サクラエディタ
        と表示されます。

        下記のStirling
        http://www.vector.co.jp/soft/win95/util/se079072.html
        のテキスト部分に、
        サクラエディタと入力すると、
        B530AF30E930A830C730A330BF30
        と表示されます。
        これをコピーして、他のソフトにペースト(貼り付け)できます。

        Stirlingは、独自のクリップボードを使うため、Stirling内でコピーしたデータしか、Stirlingにペーストできません。
        • [5446] Re:DANDPとStirlingを使ってみたら? じゅうじ 2006年09月24日 12:28

          ▼ 渡辺真さん
          > 下記のDANDPの16進部分に、
          > http://hp.vector.co.jp/authors/VA020296/

          DANDP 16進入力にいいですね。
          私も、16進出力internetで見つけました。
          BINYOMIならスペース無く切り取り出来るので、300KBのテキスト(SJIS)でも大丈夫でした。

          http://www.vector.co.jp/soft/win95/util/se347515.html
          以上
    • [5448] Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。 すい 2006年09月25日 01:31

      全体的にどういう事(処理)をやりたいのかがよく分かりませんので、
      ただ単に、16進数文字列をバイナリに変換するだけならマクロを
      使えば一応は出来ますよ、というお話しを。

      カーソル位置から2文字ずつ範囲選択して、それが16進数の文字列なら
      \x** に正規表現で選択範囲のみの置換をしていく、それを16進数文字列の
      終わりまで繰り返していくだけです。

      -- HEX2BIN.PPA --
      // TAB=4
      // 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに ppa.dll を入れておいてください。
      // マクロファイルの拡張子は .PPA でなくてはなりません。

      var // 変数を確保する場所
      str:String; // 文字列変数を用意
      num:Integer;
      begin // ここより処理内容の記述 {
      S_CancelMode(0); // 各種モードの取り消し
      S_MoveHistSet(0); // 現在位置を移動履歴に登録
      num := 0; // 変換した文字数 = 0

      while(1) do begin //{
      S_Right_Sel(); // (範囲選択)カーソル右移動
      S_Right_Sel(); // (範囲選択)カーソル右移動
      str := S_GetSelectedString(0);
      if ( Length(str) < 2 ) then Break; // 範囲選択長が2未満ならループ脱出
      if ( ( StrToInt('0x'+str) = 0 ) and ( str <> '00' ) ) then Break; // 選択した2文字が16進数文字でなければループ脱出

      S_ReplaceAll( '..' , '\x'+str , $84 ); // $84 = 選択範囲 , 正規表現
      S_Left(); // カーソル左移動 - 選択解除(カーソル位置=選択範囲の左端)
      // S_SearchClearMark(0); // 検索マークの切替え
      S_Right(); // カーソル右移動 - 次の文字へ→移動
      num := num + 1; // 変換した文字数 ++
      // MessageBox(str,'p1',0);
      end; //}

      S_Left(); // カーソル左移動 - 選択解除(カーソル位置=選択範囲の左端)
      S_SearchClearMark(0); // 検索マークの切替え
      S_ReDraw(0); // 再描画

      if( num > 0 ) then // 変換した文字があった場合。
      begin //{
      // ↓変換した範囲の文字列を範囲選択する
      S_BeginSelect(0); // 範囲選択開始
      S_MoveHistPrev(0); // 移動履歴: 前へ
      S_Right(); // カーソル右移動
      S_Left(); // カーソル左移動

      MessageBox( '文字コード変換します' , 'message' , 0 );
      S_CodeCnvUNICODEBEtoSJIS(0); // UnicodeBE→SJISコード変換
      end //}
      ;
      end; //}
    • [5452] Re:Unicode(UTF-16?)をサクラエディタで扱う方法を教えて下さい。 miau 2006年09月26日 11:09

      サクラエディタの機能をほとんど使ってないのでアレですが・・・
      選択範囲に対して変換を行う PerlScript マクロを書いてみました。
      # 日本語とか書くと面倒なので最低限のソースです。

      (1) 「30B530AF30E930A830C730A330BF」→「サクラエディタ」

      use Encode;

      # input
      my $seltext = decode('cp932', GetSelectedString());

      # hex2unicode
      $seltext =~ s/([a-fA-F0-9]{4})/pack("U", hex($1))/eg;

      # output
      InsText(encode('cp932', $seltext));

      (2) 「サクラエディタ」→「30B530AF30E930A830C730A330BF」

      use Encode;

      # input
      my $seltext = decode('cp932', GetSelectedString());

      # unicode2hex
      $seltext =~ s/(.)/sprintf('%02X', unpack("U", $1))/eg;

      # output
      InsText(encode('cp932', $seltext));