先根据[url]http://ash.jp/code/cn/gb2312tbl.htm [/url]表将所有的汉字编码转成十进制,如:有对应是:"129-74", "you",把所有的全放到一个map中.下面是代码:
private static LinkedHashMap spellMap = null;
static {
if (spellMap == null) {
spellMap = new LinkedHashMap(20901);
}
initialize();
}
private static void initialize() {
spellMap.put("129-74", "you");
spellMap.put("129-99", "dou");
}
先判断是不是GBK,接着 int hightByte = 256 + bytes[0],找一个汉字对应的Ascii,最后和上面的我们准备好的map的key进行比较.
/**
* 获得单个汉字的Ascii,并用"-"连接成一个字符串
*
* @param cn char 汉字字符
* @return string 错误返回 空字符串,否则返回ascii
*/
public static String getCnAscii(char cn) {
byte[] bytes = null;
try {
bytes = (String.valueOf(cn)).getBytes("GBK");
} catch (Exception ex) {
bytes = (String.valueOf(cn)).getBytes();
}
if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误
return "";
}
if (bytes.length == 1) { // 英文字符
return new String(bytes);
}
if (bytes.length == 2) { // 中文字符
int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1];
String ascii = hightByte + "-" + lowByte;
return ascii;
}
return ""; // 错误
}
/**
* 根据ASCII码连接成的字符串到SpellMap中查找对应的拼音
*
* @param ascii 字符对应的ASCII连接的字符串
* @return String 拼音,首先判断是否是中文如果是英文直接返回字符,如果是中文返回拼音,
*
* 否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音.
*/
public static String getSpellByAscii(String ascii) {
if (ascii.indexOf("-") > -1)
{
return (String)spellMap.get(ascii);
} else {
return ascii;
}
}
/**
* 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换
*
* @param cnStr String字符串
* @return String 转换成全拼后的字符串
*/
public static String getFullSpell(String cnStr)
{
if (null == cnStr || "".equals(cnStr.trim())) {
return cnStr;
}
char[] chars = cnStr.toCharArray();
StringBuffer retuBuf = new StringBuffer();
for (int i = 0, Len = chars.length; i < Len; i++) {
String ascii = getCnAscii(chars[i]);
if(log.isDebugEnabled()){
log.debug("cnToSpell:"+chars[i]+":"+ascii);
}
if (ascii.length() == 0) { // 取ascii时出错
retuBuf.append(chars[i]);
} else {
String spell = getSpellByAscii(ascii);
if(log.isDebugEnabled()){
log.debug("cnToSpell:"+ascii+":"+spell);
}
if (spell == null) {
retuBuf.append(chars[i]);
} else {
retuBuf.append(spell);
} // end of if spell == null
} // end of if ascii <= -20400
} // end of for
return retuBuf.toString();
}
/**
* 获取汉语字符串的声母组合,每个汉字取拼音的第一个字符组成的一个字符串
* @param cnStr 汉字的字符串
* @return 每个汉字拼音的第一个字母所组成的汉字
*/
public static String getFirstSpell(String cnStr)
{
if (null == cnStr || "".equals(cnStr.trim())) {
return cnStr;
}
char[] chars = cnStr.toCharArray();
StringBuffer retuBuf = new StringBuffer();
String ascii = getCnAscii(chars[0]);
if (ascii.length() == 1) { // 取ascii时出错
retuBuf.append(chars[0]);
} else {
String spell = getSpellByAscii(ascii).substring(0, 1);
if (spell == null) {
retuBuf.append(chars[0]);
} else {
retuBuf.append(spell);
} // end of if spell == null
} // end of if ascii <= -20400
return retuBuf.toString();
}
分享到:
相关推荐
在Java编程语言中,将汉字转化为全拼是一项常见的任务,特别是在处理中文文本或者进行自然语言处理的场景下。这个过程通常被称为汉字拼音转换。在Java的JDK 1.4版本中,虽然没有内置直接支持汉字转全拼的库,但...
在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...
汉字转化为全拼的JAVA程序源码,将每个汉字转换为拼音。 很有意思的一个程序,用了map,字符转换,以及汉字和英文转换的算法,非常有意思。 适合于提高自己对java兴趣的同学,同时提升结合实际编程的能力。
在Java编程语言中,处理汉字转化为全拼或拼音首字母是一项常见的需求,特别是在文本处理、搜索引擎优化(SEO)以及中文信息处理等领域。本篇将详细讲解如何实现这一功能,主要涉及以下几个知识点: 1. **汉字编码与...
### JAVA中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...
全拼是指将汉字转换为完整的汉语拼音,而简拼则是用简化的形式表示汉字,通常只包含声母和韵母,不包括声调。在Delphi 12 XE中,我们可以利用内置的TCharServices组件或者第三方库来实现这一功能。 1. **...
全拼是汉语拼音的一种形式,它将每个汉字转换成与之对应的拼音,以便非中文环境下的计算机系统能够理解和处理中文文本。本文将深入探讨汉字转拼音全拼读音发音的相关知识点。 1. 汉字与拼音:汉字是中文的基本文字...
- **搜索引擎优化**:在网站内容中,将中文转化为拼音可以帮助搜索引擎更好地理解页面内容,从而提高搜索结果的相关性。 - **语音合成**:在语音识别或TTS(Text To Speech)系统中,拼音是将文字转化为语音的关键...
Pinyin4j是一个广泛使用的Java库,它提供了将汉字转换为全拼和简拼的功能。在ASCII码转换方面,需要注意的是,汉字不直接对应ASCII码,因为ASCII码只能表示128个基本拉丁字符,而汉字属于Unicode字符集,包含数千个...
在Java编程语言中,处理汉字转换为拼音、获取汉字首字母以及处理多音字的问题是一项常见的任务,尤其在中文信息处理、搜索引擎优化(SEO)或者中文输入法开发等领域。这里我们将详细探讨这些知识点。 首先,我们要...
Java拼音搜索是一个在Java开发中常见的功能,尤其在构建搜索引擎或者中文输入法时,将汉字转化为拼音以便于处理和检索。Pinyin4j是一个流行的Java库,专门用于处理汉字到拼音的转换。在这个项目中,采用了Servlet三...
标题“将汉字转化成拼音”所指的,就是这样一个功能,它可以将汉字转化为全拼或首字母拼音,使得计算机可以通过拼音来处理汉字。 `PinyinUtils.java` 是一个Java工具类,用于实现汉字到拼音的转换。Java作为一种...
Java汉字转拼音技术是计算机处理中文文本时常用的一种方法,特别是在搜索引擎优化、语音识别、文本分析等领域有着广泛的应用。这个名为"java汉字转拼音配置文件及jar.zip"的压缩包包含了一个实现汉字到拼音转换的...
在处理中文字符时,尤其是进行数据检索、排序或者关键词提取时,将中文转化为拼音能够带来很大便利。下面我们将深入探讨这个话题。 首先,`pinyin4j`是一个开源的Java库,由Barry De Zwart开发,它的主要功能是将...
"汉字转全拼或首字母Oracle存储过程"就是这样一个工具,它能够帮助我们高效地完成汉字到拼音的转化。 首先,我们需要了解汉字转全拼的基本原理。汉字的全拼是基于汉语拼音,每一个汉字都有对应的拼音表示。在计算机...
在IT领域,汉字拼音转化是一项常见的任务,尤其是在处理中文数据、搜索引擎优化、自然语言处理以及中文输入法等应用场景中。本资源提供了一个专门用于汉字转拼音的工具类,结合了必要的jar包,使得开发者能够方便地...
这个"java中文转化拼音工具类"是一个实用的小程序,它可以帮助开发者快速、便捷地将汉字转换为全拼,这对于那些需要处理大量中文文本的项目来说尤其有价值。 Java中实现汉字转拼音的主要方式是通过特定的库或者API...
例如,如果你正在开发一个基于拼音的搜索系统,可以将用户输入的关键词转化为全拼,然后与数据库中的拼音数据进行匹配,从而提高搜索的准确性。 在学习和使用这些库时,需要注意一些细节,比如处理多音字(一个汉字...
Java中的汉字转拼音工具类主要用于将汉字转换为其对应的汉语拼音,尤其在处理中文数据时非常有用,例如在生成英文URL、关键词分析或者搜索索引时。这类工具通常基于开源库,如Pinyin4j,HanyuPinyin,或者自定义实现...