背景:
GB2312、GB18030-2005、GBK、Big5、CNS-11643 中的汉字表意字符排序/编码顺序各不相同,并且与 Unicode(包括 UTF-8)中的排序方式不同。
从 macOS 12 开始,即使正确指定,
sort
macOS 中附带的命令也不会考虑 GB18030 / CNS-11643 / Big5 的编码序列。LC_COLLATE=zh_CN.GB18030 (or zh_TW.Big5, etc.)
最小工作示例:将此 shell 命令添加到您的 macOS Automator 应用程序,将内容发送到stdin
:
iconv -t gb18030 | LC_COLLATE=zh_CN.GB18030 sort -uf | iconv -f gb18030
(您可以通过 macOS 系统偏好设置将热键绑定到此 Automator 服务。)
之后,在 BBEdit 或 TextEdit 或 CotEdit...任何你喜欢的应用程序中创建一个文本文档,只要它支持 macOS“服务”,然后将以下内容复制到其中:
一
䴘
然后选择这两行,运行上面创建的服务。
预期结果:按照 GB18030 的规定,“一”排在“䴘”之上。
实际结果: 无效数据错误。
我将向苹果发送这个功能增强请求,但没有人可以保证这个反馈是否会被接受和处理。同时,有什么方法可以自定义我自己的排序列表,让命令sort
按我的预期工作?