Lua 汉字转拼音

版权声明:本文为博主原创文章,未经博主允许不得转载。如果对文章有意见,请留言,认为有帮助,请顶一下。我创建了一个QQ群“Vulkan编程指南”,群号616407254,点击链接加入群【Vulkan编程指南】:https://jq.qq.com/?_wv=1027&k=467WJmb, 欢迎反馈问题。Vulkan编程指南翻译系列可能不会再更新或者校对了,有兴趣的同学可以等试读版或者纸质版出版,等两个三月即可。 https://blog.csdn.net/cloudqiu/article/details/80341861
2018-05-16

   最近想给博客增加一个功能,把url转换成字符串,一来好辨认,可以形成良好的固定链接URL,二来可减少暴露系统设计的关键信息。一些项目会让数据库内每一个表格都从全局的UUID生成器中领取ID,因为是随机生成的,table中相邻的一条记录也不会被通过ID猜到,也就减少了某些错误设计可能导致信息泄露的可能。UUID是很好的,但是,UUID作为url的问题是不够直观。想想wiki的url,如果从en.wikipedia.org/wiki/Adreno 变为了en.wikipedia.org/wiki/2341234123234,是不是就不好了,而且,中文wiki的url,例如“http://zh.wikipedia.org/wiki/统一资源定位符” 复制出来是https://zh.wikipedia.org/zh-hans/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E7%AC%A6,这也是比较糟糕的。所以,url中汉字转为拼音是相当由必要的。
   Lua中luarocks仓库中没有汉字转拼音的lib,可查询到的 cyrilis/lua-pinyin也不能正常工作,在这个库的基础上,我花了两个小时自己弄了一份可工作的版本。因为一个汉字可能对应多个拼音,一个拼音可能对应多个汉字,想要准确的给一个汉字字符串标注拼音,是很难做到的。例如多音词“朝阳”,是Cháo yáng,还是Zhāo yáng呢?一个小小的lib,也不可能用上机器学习来做上下文语境判断对吧。所以,简单点来。强制让汉字只对应一个拼音,放弃多音词。实现的原理也非常的简单,获取汉字字符的utf8编码,如汉字“实”的utf8编码为“&#x5B9E”,取5B9E,对应“shí”,之后再选择是否把是否把声调的字符 í 替换为ASCII小写字母,或者全部换为大写字母。所以,我们需要一个表格,把常见的几万字的汉字一一对应到一个拼音上。幸好这个工作已经有前人做好了,我在hotoo/pinyin 这里lib中找到了。需要把js数组转换为Lua table。

 

 

如果有任何意见,欢迎留言讨论。 


[ 主页 ]
COMMENTS
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页