LoginSignup
1

More than 3 years have passed since last update.

形態素解析器「Sudachi」の文字コードまわり

Posted at

設計者の高岡さんに以前聞いたことのメモ。

▼ 内部的にUTF8の理由

  • 1: UTF16だと"0"byteを含む文字がある → dartscloneでは"0"byteを許容できない

    • シフトするときに、+0だと、そこからシフトしない → 成り立たない
    • 普通のDAではC+1しているが、dartscloneでは+1していない
    • 255のとき+1すると=256、8bitで溢れる → 9bitにはしたくない
    • UTF8ではnull文字以外で"0"はない
  • 2: UTF16だと(コード割当的に?)Trieが非効率になる、という古くからの言い伝え


  • UTF16を積極的に使いたい理由は「Javaだから」以外ない
  • プラグインにはUTF8としてはみせていない(Stringでやってもらう)

▼ UTF8InputText

  • originalText: 原入力文(UTF16)
  • modifiedText: 正規化後文(UTF16)

  • bytes: modifiedTextのUTF8バイト列
  • offsets: bytesoriginalText の対応
  • byteIndexes: bytesmodifiedText の対応
  • textOffset (UTF8InputTextBuilder内): modifiedTextoriginalTextの対応

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1