javascript汉字获取拼音首字符问题?

JavaScript019

javascript汉字获取拼音首字符问题?,第1张

那个是VBscript的函数,js里面没有获取GB2312编码的函数,需要自己整一个。

GB2312里面的7k多个汉字是按照拼音排序的,后来扩充的汉字并没有按照拼音排序,(为了不打乱已经排好的GB2312编码表),所以要准确获取拼音最好还是用词库来比对。

这里有比较好的例子:

http://www.cssrain.cn/demo/pinyin/lukin/Pinyin.html

自己改写一下就可以。

如果要搞好那个函数,需要把编码转换为ansi编码,网上有很多这里函数。

复杂的汉字确实不能找到正确的拼音,只适用简单的汉字GB2312里的。

改写如下:

先去http://www.cftea.com/c/2009/04/3T7WXDO9S9VFBXH3.asp 里弄两个函数来:字数超过限制就不贴这两个函数了。自己去下载一下:

function UnicodeChr()

function AnsicodeChr()

var s='拼音转换'

alert( getPY_str(s) )

function getPY_str(str){

var py_str=''

for ( var i=0i < str.length i++)

{

py_str +=getPY(str.substr(i,1))

}

return py_str

}

function ansi(c){

return UnicodeToAnsi(c.charCodeAt(0))

}

function UnicodeToAnsi(chrCode)

{

var chrHex=chrCode.toString(16)

chrHex="000"+chrHex.toUpperCase()

chrHex=chrHex.substr(chrHex.length-4)

var i=UnicodeChr().indexOf(chrHex)

if(i!=-1)

{

chrHex=AnsicodeChr().substr(i,4)

}

return parseInt(chrHex,16)

}

function getPY(ch)

{

if(ch !='') {

var code = ansi(ch)

var py = ''

if(code>=45217 &&code<=45252) {

py = "A"

} else if(code>=45253 &&code<=45760) {

py = "B"

} else if(code>=45761 &&code<=46317) {

py = "C"

} else if(code>=46318 &&code<=46825) {

py = "D"

} else if(code>=46826 &&code<=47009) {

py = "E"

} else if(code>=47010 &&code<=47296) {

py = "F"

} else if((code>=47297 &&code<=47613) || (code == 63193)) {

py = "G"

} else if(code>=47614 &&code<=48118) {

py = "H"

} else if(code>=48119 &&code<=49061) {

py = "J"

} else if(code>=49062 &&code<=49323) {

py = "K"

} else if(code>=49324 &&code<=49895) {

py = "L"

} else if(code>=49896 &&code<=50370) {

py = "M"

} else if(code>=50371 &&code<=50613) {

py = "N"

} else if(code>=50614 &&code<=50621) {

py = "O"

} else if(code>=50622 &&code<=50905) {

py = "P"

} else if(code>=50906 &&code<=51386) {

py = "Q"

} else if(code>=51387 &&code<=51445) {

py = "R"

} else if(code>=51446 &&code<=52217) {

py = "S"

} else if(code>=52218 &&code<=52697) {

py = "T"

} else if(code>=52698 &&code<=52979) {

py = "W"

} else if(code>=52980 &&code<=53688) {

py = "X"

} else if(code>=53689 &&code<=54480) {

py = "Y"

} else if(code>=54481 &&code<=62289) {

py = "Z"

} else {

py =ch

}

return py

}else{

return ''

}

}

首先:需要一个汉字拼音对应的表,可以用json格式,也可以用类例如:

{'hao':'\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d'}里面的"\u58d5"是汉字的代码

然后通过查找你的汉字和里面的匹配,找到前面的拼音,原理是这样的,但是在匹配的时候怎么快,这个在网上有人写好的插件,也可以自己写,一般情况是:遍历里面的所有的,直到找到或者遍历完成,当然汉字的变慢在你的范围内。还有另外的,就是将汉字编码是有顺序大小的,可以排好序,然后再找前面的英文。

在js中如何实现自动获取汉字的五笔首字母?

你的意思是不是,在页面如果打“z”,转换成汉字对应的一些字,然后再根据这些字,来查数据库,取的相关的数据?

这样麻烦。

一般都是在存数据的时候,就已经转换好了对应的拼音。

比如要存:张**

,在存入数据库的时生成一个对应的拼音:zhang**

,把这个也一起存了,汉字存汉字字段,拼音存拼音字段。

查找时输入z,就直接在拼音字段里查需要的数据。

如果表允许再增加字段,还是加个拼音的字段,查找时候方便,快捷。

网上找个汉字转换拼音的类,把数据处理一下,存进拼音字段里。

这个是汉字转拼音参考: