TeraTermProject / teraterm

Other
392 stars 33 forks source link

マクロでファイルを読み書きする際、文字コードを指定できるようにする #190

Open zmatsuo opened 3 months ago

zmatsuo commented 3 months ago

144 から派生

拡張案

nmaya commented 3 months ago

本当にやるなら、以下の考慮が必要かと思います。

対応する文字コード/どうやってコード変換するか

外部ライブラリは用いない。 ほかの言語のようにたくさんのエンコーディングには対応しない。 あらゆる範囲を網羅するのは大変なため https://github.com/TeraTermProject/teraterm/issues/144#issuecomment-2003777526

以下も影響がある(べき?)だと思います

以下はバイト数の指定があり、マクロを書く人はファイルのエンコードを把握してカウントを考える必要があると思います。

zmatsuo commented 2 months ago

以下も影響がある(べき?)だと思います

fileread/filewrite の読み書き
filestrseek/filestrseek2 での検索

確かに影響があるべきですね。

以下はバイト数の指定があり、マクロを書く人はファイルのエンコードを把握してカウントを考える必要があると思います。

fileread/filewrite
fileseek, fileseekback

fileread はファイルから指定バイト数を読んで、 UTF-8 にコンバートして文字列型変数に代入。

filewrite は、文字列型変数(UTF-8)から指定バイト数を切り取って、 ファイルの文字コードに変換して書き込み。

fileseek(back) はユーザーがファイルのバイト数を把握、特に変更なし。

という仕様でよさそうな感じがします。

拡張は案2のほうがよさそうに思えてきました。

fileencode fp "UTF-16LE"

デフォルトは "noconv" とかでしょうか。