它是一个工具,允许你输入拼音和可选的声调号码,并只显示具有这种发音的常用汉字。
它允许您在前3500个字符列表(常用)或前6500个字符列表(相对常见)之间切换。
其他一些功能包括显示或隐藏字符的所有拼音发音,以及按通用标准汉字源表中的字符索引显示或搜索。
它目前只处理简体字,因为这是源码所涉及的,也是我想要学习的。
请注意,这不是一个全面的中文学习工具。要学习中文,你需要学习单词,而不仅仅是汉字。汉字只是汉语的一个层面,即使完全理解了所有的汉字,也不意味着你已经学会了这门语言。
在学习汉语的同时,我想了解一下哪些汉字实际上是常用的。如果你在字典里查汉字列表,你会得到令人眼花缭乱的字数。词典尽量做到全面。幸运的是,其中大多数只在历史上使用过。
我想删除森林中不相关的角色(对于我的目的而言),并找到一个真正值得投入时间的角色列表。
我做这个是为了获得一个概述,并能够很容易地回答诸如“有多少常用字符有相同的发音?”之类的问题。
我还希望它能正常工作,而不必等待为每个查询加载网页。我使用完全离线搜索(您在加载页面本身时下载数据)使其工作。
在我的搜索过程中,我找到了这份中国政府制定的官方通用标准汉字表。
遗憾的是,这个列表是一个栅格化的PDF,它甚至不包含这些字符的发音。
尽管如此,它似乎是常用字符的一个很好的权威参考。我开始四处搜索,在这个中文网页上找到了它的一个文本版本。在检查数据时,我发现它在3649到3668字符附近有一些错误,我必须手动修复这些错误。
为了将其与发音数据相结合,我找到了Unicode拼音表。我手动添加了数字发音,但我发现这些发音从那个来源中丢失了。我已经将我的手动编辑记录在edit-to-hanzi-pinyin.txt中。请注意,由于我自己只会说基本的中文,我不能排除可能会有更多的错误。如果有的话,我愿意使用更可靠的发音数据来源。
使用这些数据,我创建了hanzi-pinyin.6500.csv和hanzi-pinyin.3500.csv文件,它们是汉字搜索工具的来源。
最初我只是使用grep来搜索汉字拼音CSV文件,但当我只想考虑拼音时,发现它变得很麻烦,因为需要编写正则表达式。
我为自己创建了cnhz python脚本,最初是作为一个简单的包装器来为我构建grep正则表达式,这样我就可以只写拼音了。然后我在它周围添加了更多的功能。
随着它变得越来越有用,我想如何才能让其他中国学习者也更容易接触到它。他们中的大多数没有使用Linux或安装了Python。我想在Go中重写它,使其成为单一的可执行文件-但发现命令行格式对大多数人来说会很笨拙。此外,Windows cmd.exe不支持中文字符。
我最终决定把它变成一个网页。CSV文件足够小,可以将整个数据库加载到浏览器的内存中,这样您就可以进行完全的客户端搜索-使体验比加载在线词典条目流畅得多。
此外,因为我可以很容易地将其托管在我自己的网页上,而且无论如何我都会付费,所以我不需要添加任何广告或任何东西来使体验变得更糟。
此外,任何学习者都可以很容易地下载并脱机使用该页面,以防我的网站出现故障或当您没有互联网时使用。
我试图通过把网站变成一个进步的网络应用程序来更多地支持离线工作。然而,虽然添加清单很容易,但我发现要添加服务工作者(允许脱机缓存)-我必须将所有资产(包括主CSS文件的副本)移动到/cn/hanzi/。由于目前没有时间弄清楚这一点,我决定暂时不增加服务人员。
顺便说一下,hanzi_list.js文件是使用awk脚本从CSV源代码生成的:
<;../files/hanzi-拼音-full.csv\awk\';NR==1{printf";const hanzi_3500=\";";}nr==3501{printf";\";;const hanzi_6500=hanzi_3500+\";";}{print NR";,";$0";\\n\\";}end{print";\";}end{print";\";\nconst HANZI_6500_SPLIT=HANZI_6500.Split(\";\\n\";);";}';\>;../js/hanzi_list.js。
我希望你会发现我的中文汉字工具很有用。如果您有任何问题或想与我联系,请查看下面的详细信息。