diff --git a/README.md b/README.md index 057c31e..a80aec5 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ ## 命令行工具 位于`cmd`文件夹。 ```bash -用法: [-h|f|nr] [-db 字.db] [-d 🌹😺‎🐴‫👩] [-e 好] 形声字选择1 形声字选择2 ... +用法: [-h|f|nr] [-db 字.db] [-d 🌹‪🐱⁢🐴‭👩] [-e 好] 形声字选择1 形声字选择2 ... -a string 添加一个汉字到附加库 -d string @@ -47,6 +47,7 @@ ```bash go run cmd/main.go -i -a 哦 -p o 文字: 哦 拼音IPA: 0 ɔ 轻声 ID: 93346820784388 +程序处理结束 ``` ### 查询库中记录的字的信息 ```bash @@ -54,38 +55,53 @@ go run cmd/main.go -a 行 查询到汉字 行 的记录: 0) #149859999752449 行 [ɕiŋ阳平] 从行 xing xínɡ 1) #149859999554817 行 [xɑŋ阳平] 从行 hang háng +程序处理结束 ``` ### 编码 > 注意: 可以指定`-nr`参数从而使编解码结果唯一。 ```bash go run cmd/main.go -e 好 -编码结果: 🌹😺‎🐴‫👩 +编码结果: 🌹‪🐱⁢🐴‭👩 +程序处理结束 ``` ### 解码 ```bash -go run cmd/main.go -d 🌹😺‎🐴‫👩 +go run cmd/main.go -d 🌹‪🐱⁢🐴‭👩 解码结果: 好 +程序处理结束 ``` ### 添加一个字到附加库 ```bash go run cmd/main.go -e 的 -编码结果: 的‬🈳⁠🈳⁦🈳 +编码结果: 的‬🈳🈳⁤🈳 +程序处理结束 + go run cmd/main.go -a 的 -p de -r 日 -re 🌞 已添加汉字: 的 读音: t, ɤ, 轻声 部首: 日 ID: 130309308023300 已添加部首: 日 颜文字: 🌞 -go run cmd/main.go -e 的 -编码结果: 🔪😋⁦😯‏🌞 +查询到汉字 的 的记录: +0) #130309308023300 的 [tɤ轻声] 从日 de de +程序处理结束 + +go run cmd/main.go -e 的 +编码结果: 🔪‬😋‭😯‍🌞 +程序处理结束 ``` ### 指定多音字 ```bash go run cmd/main.go -e 你好,世界!看看多音字:行。 -编码结果: 🥛​👔🐴‮👤🐒🐱🐎👩,🌴☀️😨🌍➖✌️😨👨‍🌾!👖🔐🍉👁️😭🔐🍉👁️🕳️🌀🍉🪩🧂🎵🍉🎵⬅️☀️😨🚼:[🌟🦅🦎⛕|🌷👍🦎⛕]。 +编码结果: 🥛⁩👔⁨🐴‍👤🌸🐱🐴👩,📙☀️😨🌍🦶👴😨👨‍🌾!👖🔐🍉👁️😭🔐🍉👁️🫘🌀🍉🪩💊🎵🍉🎵⬅🌅😨🚼:[✨🦅🧗‍♂️⛕|🐵👍🧗‍♂️⛕]。 可选形声: [2] 在参数中指定形声字编号(从0开始)以生成不带中括号的编码结果 +程序处理结束 + go run cmd/main.go -e 你好,世界!看看多音字:行。 1 -编码结果: 🥛⁦👔⁢🐴👤🐵🐈‍⬛🐎👩,🪸☀️😨🌍🐓✌️😨👨‍🌾!👖🔐🍉👁️😭🔐🍉👁️🪔🌀🍉🪩💊🎵🍉🎵👈🌅😨🚼:🐅👍🧗‍♂️⛕。 -go run cmd/main.go -d 🥛⁦👔⁢🐴👤🐵🐈‍⬛🐎👩,🪸☀️😨🌍🐓✌️😨👨‍🌾!👖🔐🍉👁️😭🔐🍉👁️🪔🌀🍉🪩💊🎵🍉🎵👈🌅😨🚼:🐅👍🧗‍♂️⛕。 +编码结果: 🥛👔⁨🐴👤🌼😺🐴👩,🏔️🌅😨🌍➖👴😨👨‍🌾!👖🔐🍉👁️👖🔐🍉👁️🔪🌀🍉🪩🦷🎵🍉🎵⬅☀️😨🚼:🔥👍🧗⛕。 +程序处理结束 + +go run cmd/main.go -d "🥛👔⁨🐴👤🌼😺🐴👩,🏔️🌅😨🌍➖👴😨👨‍🌾!👖🔐🍉👁️👖🔐🍉👁️🔪🌀🍉🪩🦷🎵🍉🎵⬅☀️😨🚼:🔥👍🧗⛕。" 解码结果: [你|儗]好,世[界|畍]!看看多音字:行。 +程序处理结束 ``` ## 实用工具 diff --git a/cmd/main.go b/cmd/main.go index 8321e1a..d59b9d5 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -132,7 +132,7 @@ func main() { } fmt.Println("已删除汉字ID:", *deloverlay) } - if *addoverlay != "" { + if *addoverlay != "" && !*getglobalid { r := []rune(*addoverlay) if len(r) != 1 { fmt.Println("ERROR: 非法汉字参数-a:", *addoverlay) diff --git a/coder_test.go b/coder_test.go index bce861f..d1f0143 100644 --- a/coder_test.go +++ b/coder_test.go @@ -14,8 +14,7 @@ func TestEncode(t *testing.T) { if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) - if es.String() != "🥛👔🐴👤🌹🐱🐴👩,💦🌞😨🌍➕✌😨👨‍🌾!😭🔐🍉👁️😭🔐🍉👁️🔪🌀🍉🪩🐑🎵🍉🎵👈🌞😨🚼:[👇🦅🧗⛕|🌹👍🧗⛕]。" { + if es.String() != "🥛👔🐴👤🌹🐱🐴👩,💦🌞😨🌍➕👴😨👨‍🌾!😭🔐🍉👁️😭🔐🍉👁️🔪🌀🍉🪩🐑🎵🍉🎵👈🌞😨🚼:[👇🦅🧗⛕|🌹👍🧗⛕]。" { t.Fatal("got", es.String()) } if len(lst) != 1 && lst[0] != 2 { @@ -25,18 +24,16 @@ func TestEncode(t *testing.T) { if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) - if es.String() != "🥛👔🐴👤🌹🐱🐴👩,💦🌞😨🌍➕✌😨👨‍🌾!🐽🌞🐴✋🔪🦅😨🏠🔪🌀🍉🪩🐑🎵🍉🎵👈🌞😨🚼:🐑🎵🧗💰🌹👍🧗⛕👇🦅🧗⛕。" { + if es.String() != "🥛👔🐴👤🌹🐱🐴👩,💦🌞😨🌍➕👴😨👨‍🌾!🐽🌞🐴✋🔪🦅😨🏠🔪🌀🍉🪩🐑🎵🍉🎵👈🌞😨🚼:🐑🎵🧗💰🌹👍🧗⛕👇🦅🧗⛕。" { t.Fatal("got", es.String()) } if len(lst) != 2 && lst[0] != 2 && lst[1] != 2 { t.Fail() } - es, lst, err = c.Encode(false, "的") + es, _, err = c.Encode(false, "的") if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) if es.String() != "的🈳🈳🈳" { t.Fatal("got", es.String()) } @@ -48,52 +45,44 @@ func TestDecode(t *testing.T) { t.Fatal(err) } s := "你好,世界!看看多音字:行。" - es, lst, err := c.Encode(false, s) + es, _, err := c.Encode(false, s) if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) ds, err := c.Decode(es, false) if err != nil { t.Fatal(err) } - t.Log(ds) if ds != "[你|儗]好,世[界|畍]!看看多音字:[行|行]。" { t.Fatal("got", ds) } - es, lst, err = c.Encode(false, "你好,世界!指定多音字:银行行。", 1, 0) + es, _, err = c.Encode(false, "你好,世界!指定多音字:银行行。", 1, 0) if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) ds, err = c.Decode(es, false) if err != nil { t.Fatal(err) } - t.Log(ds) if ds != "[你|儗]好,世[界|畍]![指|抧|扺]定多音字:[銀|银]行行。" { t.Fatal("got", ds) } - es, lst, err = c.Encode(false, "好啊") + es, _, err = c.Encode(false, "好啊") if err != nil { t.Fatal(err) } - t.Log(es.String(), lst) ds, err = c.Decode(es, false) if err != nil { t.Fatal(err) } - t.Log(ds) if ds != "好啊" { t.Fatal("got", ds) } - es = EmoziString("🌹😺‎🐴‫👩") // nolint: go-staticcheck - t.Log(es.String()) + es = EmoziString("🌹‪🐱⁢🐴‭👩") // nolint: go-staticcheck ds, err = c.Decode(es, false) if err != nil { t.Fatal(err) } - t.Log(ds) if ds != "好" { t.Fatal("got", ds) } diff --git a/define.go b/define.go index faba199..58780c6 100644 --- a/define.go +++ b/define.go @@ -210,14 +210,14 @@ var 逆声调 = 逆初始化[声调枚举](声调[:], 4) // // 具体做法是先对后面的文本做crc32然后取 校验表长度^校验字节数 的模 var 校验表 = func() []rune { - x, err := base14.UTF16BE2UTF8(base14.StringToBytes("\x20\x0b\x20\x0c\x20\x0d\x20\x0e\x20\x0f\x20\x2a\x20\x2b\x20\x2c\x20\x2d\x20\x2e\x20\x60\x20\x61\x20\x62\x20\x63\x20\x64\x20\x65\x20\x66\x20\x68\x20\x69\x20\x6a\x20\x6b\x20\x6c\x20\x6d\x20\x6e\x20\x6f")) + x, err := base14.UTF16BE2UTF8(base14.StringToBytes("\x20\x0b\x20\x0c\x20\x0d\x20\x0e\x20\x2a\x20\x2c\x20\x2d\x20\x60\x20\x61\x20\x62\x20\x63\x20\x64\x20\x65\x20\x66\x20\x68\x20\x69\x20\x6a\x20\x6b\x20\x6c\x20\x6d\x20\x6e\x20\x6f")) if err != nil { panic(err) } return []rune(base14.BytesToString(x)) }() -// 校验表长度 25 +// 校验表长度 22 var 校验表长度 = len(校验表) // 校验字节数 默认为 3, 不得大于 3 diff --git a/字.db b/字.db index 18b8a54..af7cd10 100644 Binary files a/字.db and b/字.db differ