您的位置:首页 > 编程语言 > Java开发

java获取汉字拼音

2016-11-28 11:32 281 查看
前段时间做的中文验证码识别,里面有个需要给出某个汉字的拼音,这方法主要也是通过查表给出。

下图是表中的一部分截图,其中前面是汉字的unicode十六进制编码,后面即为拼音(多音字有多个拼音对应),所以原理很简单,查找表中匹配的编码即可。这是资源链接http://download.csdn.net/detail/baidu_18987603/9695456



源码如下

public String getPinYin(char word){
String pinyin = null;
byte[] bytes = (String.valueOf(word)).getBytes();
if (bytes == null || bytes.length > 2 || bytes.length <= 0) {
// 错误引用,非合法字符
return null;
}
if (bytes.length == 1) {
// 英文字符
return null;
}
if (bytes.length == 2) {
//中文字符
//得到字符的unicode十六进制编码,并转为大写
String wordCode = Integer.toHexString(String.valueOf(word).codePointAt(0)).toUpperCase();;
String pattern = "^"+wordCode+"\\s*([A-Z]+)";  //多音字只匹配第一个拼音
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
File file=new File("Mandarin.dat");      //此中的mandarin.dat即为查表文件
BufferedReader br;
try {
br = new BufferedReader(new FileReader(file));
String temp=null;
while((temp=br.readLine())!=null)
{
Matcher m = r.matcher(temp);
if (m.find( )) {
pinyin = m.group(1);

}
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

return pinyin;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: