请问,如何解析utf-16编码的字典

如题,最近写个背单词的小程序,以往英文环境下没这方面的问题,都是默认的utf-8编码的,想加上点儿汉语对照的功能,摘下来个汉语字典,无论是mdxexplorer,mdx-utils都发觉,从字典源文件mdx解析出来的都是utf-8,但汉语字典里一些拼音和繁体字或者冷僻字词啥的,都是utf-16编码的,在解析出来的源文件这块,统统都搞成了utf-8,弄得后期的加工处理数据的程序,都在遇到这些在mdx字典源头就应该是utf-16编码的字符的时候,总出一些莫名其妙的问题。

可以在得到词典源文件后用emeditor类的编辑器把词典源文件另存为UTF-8, 再来处理就解决了。

mdxexport是可以正常导出utf16的,mdx-utils不行。

汉语mdx词典还有使用compact html的,只有mdxexport能处理。那是另一个问题。可以在导出时,用getdict把compact html转换为html。

汉语词典另外还有大量私用字,又是另一个问题。

1 个赞

遇到的就是这些汉语字典的冷僻字,一开始没注意字符编码的事儿,用mdxexplore导出字典源文件之后,再用beautifulsoup解析的时候,总出莫名其妙的错误,后来调试代码的时候,才发觉一堆蝌蚪文的,一查keyword一堆怪码占位符,不知道,是字典当初编撰的时候,就是作者都头疼,还是在解析的时候,因为字符集字符编码的事儿,弄出来一堆乱码的,后来,拿自己手头上对应的纸质字典对照一下,发觉,干脆连输入法都没有选项的冷僻字,而且这样的字,我自己在网上找了半天,也没找到,连contrl+c,contrl+v的路子都难受的生僻字。对了,我解析的字典是现代汉语词典(2002增补本)(汉英双语),用的是论坛里提供的mdx文件,无论是用mdxexplort还是 mdx-utils解析出来之后,都大概有将近千八百的冷僻字是这样的占位符,在emeditor里这样的占位符就是个口一样的方块。不知道是字典因为字符集字符编码解析的原因,还是当初字典的作者也脑袋大的,反正这样的占位符替代的生僻字,不仅好几个输入法里没有,我是在网上找了半天,连拷贝粘贴的路子都行不通。

你或者需要:

楼主说的生僻字问题与文本编码没有任何关系,如果一开始编码就选错了那么所有的文本都是乱码,甚至英文都不能正常显示。至于生僻字问题是由于出版商还在用古董级的GB2312编码,如果一个字不在这个字符集内就只能私造码位,导致转到unicode后码位对应不上无法显示。这个问题也无有效的解决方案,只能一个个手动对应。

2 个赞

确实是这么回事儿,在utf-8环境下顺风顺水惯了,一开始也没往这方面想,就是在导入导出文件的时候,emditor或者libreoffice总提示utft-16,后来,调试单步跟踪代码的时候,才发觉有蝌蚪文,这个时候,开始怀疑字符集,编码的事儿,后来,对照一下纸质版,发觉,纸质版上的这些冷僻字,连输入法都没有,按照读音,在网上搜一下,能搜到的话,大不了费点儿劲,拷贝粘贴一下,结果,网上都没划拉着,外研社出的汉英对照的冷僻字,居然在正统官方新华字典的官网上都找不到,这事儿,到哪儿说理去。自己在自己机器上手动造字,自赋unicode编码值,这么折腾的话,估计换个机器,立马是一堆蝌蚪文,或者不明不白的一些大方块似的占位符啥的。这事儿说一千道一万的,还是中文影响力不够,形成不了全球流通的标准,有限的一些通用的,也都是常用字大概三五千左右,其他的,一些冷僻字,都得自己手动造。

不必造什么字。《现汉汉英》的字不会超出《现汉7》的范围。

M.C为了做《现汉7》,已经造了宋体、黑体的字型。

你把他的字型搬一个过来用就行。

找不到的字,就在M.C的《现汉7》里检索,复制过来用。

《现汉汉英》mdx我做过改版,就是搬M.C的黑体字型过来用。我只是像间歇喷泉那样偶尔发了就删。下一次也许在重阳节发。我也不会特地为了某个人发,发出来也会加下载限制。

各人自己做自己的改版,作为一种学习方法,是不错的。不这样,谁能有耐性读词典? :smile:

楼主说的是历史了。现在Unicode中的汉字已经很多了,新字还在陆续造。

超大字符,Win10已经支持了。

需要超超大字符,包括很冷的,Unicode还没有的字,可以用全宋体。

你对汉语词典看来真不太熟悉。去下载本坛M大的《汉语大字典》看看。

确实对中文汉语字典不太熟悉,就是上学的时候,偶尔翻翻新华字典,其他的,中文这块,基本上多少年都没碰过字典的,网络环境下,有啥网络词语的,也基本上百度必应谷歌的事儿。毕竟所谓的上下五千年的文化,真深究起来,也肯定有不少说道的。

用叶典检索难字也行。坛里有mdx,不过mdx的资料是旧的,没有跟着网站更新。

叶典

有时我也用这个:

台湾国际电脑汉字及异体字知识库
https://chardb.iis.sinica.edu.tw/

岑鸟,这个左右字挤到一起,念chen2,表示小鸟的意思,现代汉语词典(2002增补本)(汉英双语),纸质版第240页,mdx里,mdxexplort解析出来的源文件,怎么折腾都是个方块,占位符,已经电脑上装了台湾版的全宋体,拿win自带的字符映射器,也没发现这个字对应的unicode.网上划拉半天,跟抬杠似的,就是没找到,汉语,毕竟沉淀了这么多年的东西,真较真的话,也不缺博大精深的地方。难不成这事儿,非得自己在自己电脑上造字不成。。。。

全宋体有4个字型,这个字在全宋体2。

𮭦 U+2EB66

这个字贴到Libreoffice Writer为新宋体,可以显示。

装完字体,导入注册表文件。
然后在emeditor等文本编辑器修改显示的字体

“岑鸟”,贴在叶典网站的两分法查字框里,马上就查到了完整的字。

你的电脑是什么系统?

Win10行。Win11未必行。

别用windows自带的字符映射器了。

下载安装免费软件BabelPad、BabelMap吧。

假如做mdx,得改css。

/* 字型 */
@font-face {
	font-family: 'Heiti';
	src: url('hei_xdhy.ttf');
}

/* 内文 */
body {
	font-family: "Times New Roman", Th-tshyn-P2, Th-tshyn-P1, Th-tshyn-P0, Th-tshyn-P16, Heiti, serif;
}

老兄似乎懂得不多,先好好在论坛逛一圈,下载使用一些mdx,读些帖子吧。你怎么不用M.C的hei_xdhy.ttf呢?

确实字符集这块,很少打交道,记得最早遇到字符集这方面的问题,是当年大学刚毕业那会儿,满世界神州大陆都移民加拿大的,那个时候,操作系统也都是98,抽冷子到加拿大的伙计,这边大陆家人发过来的邮件,识别不了中文的,当时整个世界好像喧闹了一会,后来,知道是字符集的事儿,也都不算啥了。再后来,就是搞开发那会儿,头一次在网页环境中,遇到乱码蝌蚪文,那个时候,得在页面编码里设置bg5,或者2312啥的,再之后,就是sql语句这块,从数据库里检索出来的东西,没在数据库环境这块设置好utf-8的话,sql出来的result是蝌蚪文,再之后,就是java,python啥环境的界面字符终端层面的乱码了。其他的,不过这些都是简单的系统设置层面的事儿,真真刀真枪的应付点儿字符编码啥的,确实没接触过。也当年开发层面,这种最基本的问题,sdk层面,人家厂商都解决好了,很少有代码这块需要操心这个。我个人跟字符集相关的经历,也大致就是这些。另外,多少说明一下自己,我自己哪怕当年搞开发的时候,也是刚大学毕业,啥都不懂,谁给钱多就伺候谁,一不小心,入行开发的,本身学的也不是计算机,属于基本功半路出家的比较差,但狗屁脑袋不缺想法的,可能有些比较弱智的问题,让论坛的坛友见笑了,望海涵。也算是多说一句,算是自己有感而发吧,以前年少轻狂的时候,喜欢看动画片,很多包括好莱坞的动画片,日本的动漫,真较真点儿画工,也满世界也就是中国人能画出来,但真正值钱的是创意,人家的文案,人家的编剧,中国人就弄不出来。美国迪斯尼的动画,就米老鼠唐老鸭汤姆杰瑞啥的猫和老鼠,就那种画风画质的,绝大多数中国的广告公司都能画出来,但为啥人家满世界收保护费?我自己年轻的时候,也痴迷过技术狂,疯狂的学各种框架,知道自己半路出家的,不可能在基础理论上拼过人家科班出身的,就多接触一些现成的框架,但到后来,接触的人和事儿多了,感觉,真正值钱的不是技术,也不是啥框架,是创意层面的想法,有想法的话,剩下的事儿,都是水到渠成。说的可能有点偏颇,望理解。人经历过年少轻狂,也历练过,就知道人真正值钱在哪儿,知道人值钱在哪儿,就变成啥人。

没问题。老兄被我刺激到了? 说了一大通。:smile:

我不是搞技术的,中文专业,虽然会点编程,只是外行人的玩意儿。

我这个css是从M.C、M大他们那儿偷师的。这几行是今天才完全弄懂的。 :smile:

老兄假如是写代码的,不太懂前端的css也不足为奇。

mdx属于小众软件,一般程式员也不懂的。

写程式的搞这个干嘛?个人爱好吗?

1.《說文解字》字典及全宋體更新

安装全宋体最新版
WFG还在改最新的全宋体。本坛这个是他还没公开发表的。但是amob没把他的reg发出来。需要双击导入reg。不过这个reg据说在Win 11不起作用。

用“天珩字库”也行。我上面的css里列在前面的是天珩字库。在电脑上只要安装了,mdx的文件夹里不需要有字型。在手机上就放一个M.C的黑体字型。

2.天珩字库

3.M.C的现汉字型

1 个赞

另外,再多说点儿吧,可能网络环境里说话比较轻松,但看的人和事儿多了的话,说话办事都知道深浅。自己也是很久没写代码的,今后也不打算再搞开发,这也就是偶尔想背点儿单词的,自己给自己写个背单词的工具。我自己亲眼见过的真实事例。自己公司同事,给某项目写点儿东西,很信心满满的交付给客户,那会儿还是2000刚出来的时候,就这帮政府办公室人员的计算机水平,任何一个搞开发的都可以心底里各种无视外带鄙视的,但自己公司同事写出来的东西,刚搞出来,头一次给客户看,就简单一个登录界面,据说还可以小小吹嘘一把的所谓安全机制,人家一个计算机全盲的主儿,可能计算机水平不如你,但人家业务逻辑比你强,尤其是你针对人家的业务逻辑的需求这块,客户啥时候都比你懂得多,据说本来不应该登录进去的,这个所谓的计算机小白一下子给这个登录界面就登录进去了,然后很快就给系统搞瘫痪了,立马就给搞开发这哥们整傻了。。。