<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vulcan

    低頭做事,抬頭看路

       :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      41 Posts :: 7 Stories :: 28 Comments :: 0 Trackbacks
    由于項(xiàng)目中需要把漢字轉(zhuǎn)成拼音,并且是涉及到姓名的轉(zhuǎn)換,因此不能排除有生僻字的可能.我先是查了一下漢字編碼的知識(shí),漢字編碼知識(shí)如下:
    http://www.knowsky.com/resource/gb2312tbm.htm;這里說(shuō)的是區(qū)位碼,實(shí)際上區(qū)位碼和漢字GBK碼就是同一個(gè)東西,在區(qū)位碼的區(qū)號(hào)和位號(hào)上分別加上0xA0就得到了GB2312編碼了,但是一看編碼規(guī)律,只有第一次漢字和讀音掛鉤,第二級(jí)漢字是按照部首進(jìn)行編排的,所以應(yīng)該是沒(méi)有什么絕對(duì)的關(guān)系的。于是又在網(wǎng)上找其他的資料,用java實(shí)現(xiàn)的,網(wǎng)上流傳廣泛的有兩種方法:但是就我來(lái)看都不怎么的,第一種是把漢字讀音和相應(yīng)區(qū)的漢字對(duì)照;但是只是涉及了常用的漢字,遇到生僻字是不能轉(zhuǎn)換的;第二種號(hào)稱(chēng)完整版的方法,居然把漢字碼表的基本對(duì)應(yīng)關(guān)系放到了java類(lèi)中,并且還說(shuō)什么為了防止函數(shù)字符超過(guò)65535長(zhǎng)度的限制,用了100多個(gè)init函數(shù).我實(shí)在是不能理解.其實(shí)我想得很簡(jiǎn)單:找一個(gè)漢字拼音對(duì)照表,然后初始化時(shí)讀入到HashMap中,用漢字為Key,用拼音作為value,然后就可以獲取了.不過(guò)也考慮過(guò),GBK碼表的長(zhǎng)度有27954個(gè)漢字,從來(lái)沒(méi)有用HashMap處理過(guò)如此長(zhǎng)度得東西,不知道會(huì)不會(huì)有什么限制,不過(guò)隨便想了一下應(yīng)該不可能:第一java HashMap的長(zhǎng)度不受此限制;第而,查找漢字時(shí),在HashMap中肯定時(shí)用二分法或者更好得算法來(lái)取Value,那么最壞的情況也不過(guò)時(shí)lg2(27954),這是很快的.很快實(shí)現(xiàn)了,試了一下性能還不錯(cuò),在我的機(jī)器上:init的時(shí)間200ms,查找一個(gè)漢字的平均時(shí)間為8ms.其實(shí)之前我還想過(guò)加快速度的更好的方法:把這個(gè)漢字編碼表自己先處理一遍,先利用冒泡排序法,把編碼對(duì)應(yīng)在數(shù)據(jù)文件里排好,給每個(gè)讀音漢字對(duì)照分配固定的足夠長(zhǎng)的字符寬度,對(duì)于編碼中沒(méi)有漢字的區(qū)域,用空白代替;這樣漢字的拼音編碼關(guān)系就和漢字本身的編碼建立了聯(lián)系,減去第一個(gè)漢字的編碼值,就可以得到漢字拼音在數(shù)據(jù)文件中絕對(duì)位置了,然后就可以根據(jù)漢字本身的編碼然后用文件隨機(jī)讀取的方法,取到拼音值,不知道這樣是不是會(huì)比用hashMap的方法要快一點(diǎn)?不過(guò)既然HashMap的方案可行了.那么就暫時(shí)不取測(cè)試了.
    相關(guān)的資料:
    (1) GBK漢字全拼音單字源碼表
    (2) 單字多音碼表

    posted on 2008-01-24 10:50 vulcan 閱讀(2193) 評(píng)論(6)  編輯  收藏

    Feedback

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2008-05-16 10:49 yizhyi@163.com
    那對(duì) 多音字 你怎么處理的來(lái)?
    代碼可否發(fā)一份給我: yizhyi@163.com
    謝謝  回復(fù)  更多評(píng)論
      

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2008-05-23 18:49 vulcan
    多音字的處理:
    我寫(xiě)了一個(gè)Python腳本,把這個(gè)單字碼表轉(zhuǎn)換了一下,換成了這樣的形式:
    漢字:讀音1,讀音2//換行
    讀入到j(luò)ava Hash中,是以漢字為Key,字符串?dāng)?shù)組為Value的Hash表。我的應(yīng)用情況比較特殊,是用于人名的轉(zhuǎn)換;而用于人名的漢字讀音一般是固定的,所以就很好處理了。另外,處理后的單字多音碼表我傳到上文中了。  回復(fù)  更多評(píng)論
      

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2008-06-19 16:10 車(chē)
    像麒麟這樣的生僻字用java
    怎么轉(zhuǎn)換啊  回復(fù)  更多評(píng)論
      

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2009-02-22 14:32 湘江一角
    大哥,能不能發(fā)一份源代碼給我,現(xiàn)在也是多音字上面犯愁。郵箱:luoguanghua@hotmail.com  回復(fù)  更多評(píng)論
      

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2010-12-09 19:22 liuboram
    同樣的問(wèn)題,能否把代碼共享一下呢?liuborama@gmail.com
    多謝了  回復(fù)  更多評(píng)論
      

    # re: 也說(shuō)漢字轉(zhuǎn)拼音 2012-11-14 19:22 hikaruxx
    你好,能不能發(fā)一份源代碼?ziven000@163.com
    謝謝  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲黄色免费网址| 精品女同一区二区三区免费播放| 处破痛哭A√18成年片免费| 国产精品久久久久久亚洲小说| 一本久久a久久精品亚洲| 91大神在线免费观看| 怡红院亚洲红怡院在线观看| 国产V亚洲V天堂无码| 成年女人看片免费视频播放器| h视频在线免费观看| 亚洲午夜一区二区电影院| 亚洲区日韩区无码区| 亚洲免费人成视频观看| ssswww日本免费网站片| 亚洲一区二区三区四区视频 | 亚洲精品无码乱码成人| 69天堂人成无码麻豆免费视频| 一个人晚上在线观看的免费视频 | 亚洲精品在线电影| 亚洲日韩在线第一页| 毛片a级毛片免费播放100| 日韩电影免费在线观看中文字幕| 亚洲人成色在线观看| 久久亚洲AV成人无码软件| 亚洲中文字幕视频国产| 日韩在线免费看网站| 亚洲免费福利视频| 毛片免费在线观看| yellow视频免费看| 亚洲成a人片在线不卡一二三区| 亚洲色图综合网站| 日本亚洲成高清一区二区三区| 又黄又爽一线毛片免费观看 | 免费国产成人午夜电影| 黄色永久免费网站| 日本xxxx色视频在线观看免费| 九九99热免费最新版| 综合一区自拍亚洲综合图区| 国产成+人+综合+亚洲专| 久久亚洲国产精品成人AV秋霞 | 久久亚洲精品成人777大小说|