LoginSignup
2
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の対応
2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1