马黑黑 发表于 2023-2-12 08:51

汉字转拼音

最近接到一个需求,汉字转拼音,要能脱网使用。

实际上,汉字转拼音的工具很多,随便找找就能找到,收费的、免费的都有。接到需求,我的第一反应就是建议去找一个工具,不过对方坚持还是由我来做一个网页版的。好吧,这事不难,做就做。

汉字转拼音需要一个拼音资源,这个,个人认为最好的JS封装是 pinyin-pro,从其官网pinyin-pro 下载 pinyin-pro.js ,准备工作就做好了。

下面给出一个示范,虽然简陋,核心转换功能确实完好的,可在本地测试,测试文档和JS资源文件放在相同的目录即可。示范采用即输即得的方式,代码如下:
<style>
#papa {
        margin: auto;
        width: 1200px;
        height: 400px;
        text-align: center;
        position: relative;
}
#papa textarea {
        width: 460px;
        height: 300px;
        margin: 10px;
        padding: 10px;
        font-size: 16px;
}
</style>

<div id="papa">
        <h1>汉字转拼音示范</h1>
        <textarea id="txtHanz" name="hanz" placeholder="请输入汉字"></textarea>
        <textarea id="txtPinyin" name="pinyin" placeholder="转换结果"></textarea>
</div>

<script language="javascript" src="pinyin-pro.js"></script>

<script>
let { pinyin } = pinyinPro;

txtHanz.oninput = () => {
        txtPinyin.value = pinyin(txtHanz.value).replace(/^\s/gm,'');
};

</script>演示地址:汉字转拼音 (byethost11.com)

马黑黑 发表于 2023-2-12 08:56

在我网站,分段输入时后面的段落都会在每段的起头处自动加一个空格,我在代码中已做处理但仍然不能消除这个空格。原因是我的站点问题,它一直表现怪异,很难驯服,不过它能坚持到今天已经很不错了。

庶民 发表于 2023-2-12 09:14

功能越来越强大了。

红影 发表于 2023-2-12 09:16

去测试了一下,很棒啊,能自动标注四声音调,连结尾的轻音都能自动判别{:4_199:}

红影 发表于 2023-2-12 09:17

JS太厉害了,还有专门分装好的拼音资源啊{:4_187:}

红影 发表于 2023-2-12 09:19

这个资源貌似对多音字无可奈何,我输了“这个行不行,文字要一行行来。”它给出的都是xíng {:4_173:}

红影 发表于 2023-2-12 09:21

哦,有些多音字也行的,刚才又输了“将领,将军。”,得到jiàng lǐng , jiāng jūn 。
很完美。原来特定组词的多音字还是能甄别的。{:4_173:}

起个网名好难 发表于 2023-2-12 09:52

红影 发表于 2023-2-12 09:21
哦,有些多音字也行的,刚才又输了“将领,将军。”,得到jiàng lǐng , jiāng jūn 。
很完美。原来特 ...

6楼是不同音,8楼是不同调。

马黑黑 发表于 2023-2-12 10:29

红影 发表于 2023-2-12 09:17
JS太厉害了,还有专门分装好的拼音资源啊

js自身是没有汉字转拼音功能的,这需要通过编程实现。pinyin-pro 封装的这个特定功能,封装文档有300多Kb

马黑黑 发表于 2023-2-12 10:32

红影 发表于 2023-2-12 09:19
这个资源貌似对多音字无可奈何,我输了“这个行不行,文字要一行行来。”它给出的都是xíng

针对多音、多调子,pinyin-pro的识别放在词、句里会得到较好的效果,但它也不是包罗万象,在实际应用中可以通过自定义做调整(但也难做到尽善尽美)。

地名、人名、常用字词,pinyin-por已经做得很好了

马黑黑 发表于 2023-2-12 10:34

红影 发表于 2023-2-12 09:21
哦,有些多音字也行的,刚才又输了“将领,将军。”,得到jiàng lǐng , jiāng jūn 。
很完美。原来特 ...

对。它实际上能将任意一个字的所有读音都提供出来,我在示范里没有示范这个,仅针对词、句输出

马黑黑 发表于 2023-2-12 10:35

庶民 发表于 2023-2-12 09:14
功能越来越强大了。

感谢支持

醉美水芙蓉 发表于 2023-2-12 12:42

红影 发表于 2023-2-12 14:25

起个网名好难 发表于 2023-2-12 09:52
6楼是不同音,8楼是不同调。

您是说不同调的能判断,不同音的不行?

红影 发表于 2023-2-12 14:26

马黑黑 发表于 2023-2-12 10:29
js自身是没有汉字转拼音功能的,这需要通过编程实现。pinyin-pro 封装的这个特定功能,封装文档有300多Kb

做封装的人真厉害{:4_187:}

红影 发表于 2023-2-12 14:27

马黑黑 发表于 2023-2-12 10:32
针对多音、多调子,pinyin-pro的识别放在词、句里会得到较好的效果,但它也不是包罗万象,在实际应用中可 ...

哦哦,还可以自定义啊,这个封装功能很强大{:4_187:}

红影 发表于 2023-2-12 14:27

马黑黑 发表于 2023-2-12 10:34
对。它实际上能将任意一个字的所有读音都提供出来,我在示范里没有示范这个,仅针对词、句输出

我饿是忽然想起多音字的事,所以特地去试了一下{:4_173:}

马黑黑 发表于 2023-2-12 16:05

红影 发表于 2023-2-12 14:27
我饿是忽然想起多音字的事,所以特地去试了一下

Pinyin-Pro提供很多参数,够用的

马黑黑 发表于 2023-2-12 16:06

红影 发表于 2023-2-12 14:26
做封装的人真厉害

这个需要巨大投入

起个网名好难 发表于 2023-2-12 18:49

红影 发表于 2023-2-12 14:25
您是说不同调的能判断,不同音的不行?

好像又不是,比如
调查 和 调皮 它又能分辨出来。

这样的转换不知应用在哪里。
页: [1] 2
查看完整版本: 汉字转拼音