1 件の投稿を表示中 (合計 5 個)
  • 作成者
    投稿
  • #24272
    redakt55
    参加者

    選択した文字列の文字数がステータスバーに表示されますが,基本多言語面(BMP: Basic Multilingual Plane)外の文字(U+10000~)が 2 文字とカウントされるみたいです。
    内部は UTF-16?

    #24277
    Yutaka Emura
    キーマスター

    redakt55 様

    いつもお世話になっております。江村です。

    ご指摘の通り、内部は UTF-16 で、Microsoft Word などと同様に桁数は、基本多言語面(BMP: Basic Multilingual Plane)外の文字(U+10000~)が 2 文字とカウントされます。

    よろしくお願い申し上げます。

    #24279
    redakt55
    参加者

    仕様ということでしょうか?
    率直な感想を述べると,受け入れがたいです。

    まず,技術的にはその数え方は code unit を数えているのであって,文字を数えてはいません。
    JavaScript の String.length も同じ動作ですが,これは文字数を表すプロパティーではなく,UTF-16 の code unit で測った長さを返す関数です。(よく「文字数を表す」と書いてありますが,それは解説のほうが間違っている)

    また,内部が UTF-16 なのは実装の都合であって,ユーザーにはあずかり知らぬことです。「メモリー上でこうなってるから 𩸽 や 𡈽 や 😀 を二文字と数えさせて」といわれても,多くのユーザーにはその意味するところさえ分からないのではないでしょうか。そして,具体的にどの文字がおかしな数え方になるかも分からないでしょう。

    Microsoft Word も同じとのことですが,それは Word が異常なだけで,LibreOffice Writer はちゃんと文字数を表します。

    #24281
    Yutaka Emura
    キーマスター

    redakt55 様

    いつもお世話になっております。江村です。

    私も同意見ですので、将来のバージョンで修正を検討させてください。ただし、これによって動作が遅くなる可能性がありますので、オプションとして提供する可能性はあります。

    よろしくお願い申し上げます。

    #29466
    Yutaka Emura
    キーマスター

    redakt55 様

    大変遅くなりましたが、EmEditor v20.3 beta 3 (20.2.903) で修正対応いたしました。オプションはありません。

    よろしくお願い申し上げます。

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