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

如题,如输入:中华人民共和国=》ZHRMGHG要求在firefox下能用js写的。谢谢!在下面这个地址有个实例,在firefox下不能用,水帮着改一下也行。http://... 如题,如输入:中华人民共和国=》ZHRMGHG
要求在firefox下能用js写的。谢谢!
在下面这个地址有个实例,在firefox下不能用,水帮着改一下也行。
http://www.25175.net/200808/html/2008-10/960.html
再次感谢。
展开
 我来答
microji
推荐于2016-09-11 · TA获得超过388个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:86.6万
展开全部
那个是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=0; i < 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 '';
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式