`
lbh087
  • 浏览: 10701 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 汉字转化为全拼

    博客分类:
  • java
阅读更多
先根据[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编程语言中,将汉字转化为全拼是一项常见的任务,特别是在处理中文文本或者进行自然语言处理的场景下。这个过程通常被称为汉字拼音转换。在Java的JDK 1.4版本中,虽然没有内置直接支持汉字转全拼的库,但...

    java汉字转拼音(全拼和首字母)

    在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化或文本处理等领域。本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解...

    汉字转化为全拼的JAVA程序源码

    汉字转化为全拼的JAVA程序源码,将每个汉字转换为拼音。 很有意思的一个程序,用了map,字符转换,以及汉字和英文转换的算法,非常有意思。 适合于提高自己对java兴趣的同学,同时提升结合实际编程的能力。

    以上的汉字转化为全拼或拼音的第一个字符

    在Java编程语言中,处理汉字转化为全拼或拼音首字母是一项常见的需求,特别是在文本处理、搜索引擎优化(SEO)以及中文信息处理等领域。本篇将详细讲解如何实现这一功能,主要涉及以下几个知识点: 1. **汉字编码与...

    JAVA中汉字字符转化为英文字符

    ### JAVA中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...

    delphi12 汉字转拼音全拼及简拼 XE

    全拼是指将汉字转换为完整的汉语拼音,而简拼则是用简化的形式表示汉字,通常只包含声母和韵母,不包括声调。在Delphi 12 XE中,我们可以利用内置的TCharServices组件或者第三方库来实现这一功能。 1. **...

    汉字转拼音 全拼 读音 发音

    全拼是汉语拼音的一种形式,它将每个汉字转换成与之对应的拼音,以便非中文环境下的计算机系统能够理解和处理中文文本。本文将深入探讨汉字转拼音全拼读音发音的相关知识点。 1. 汉字与拼音:汉字是中文的基本文字...

    Java中文转拼音--整理

    - **搜索引擎优化**:在网站内容中,将中文转化为拼音可以帮助搜索引擎更好地理解页面内容,从而提高搜索结果的相关性。 - **语音合成**:在语音识别或TTS(Text To Speech)系统中,拼音是将文字转化为语音的关键...

    java 汉字 转拼音

    Pinyin4j是一个广泛使用的Java库,它提供了将汉字转换为全拼和简拼的功能。在ASCII码转换方面,需要注意的是,汉字不直接对应ASCII码,因为ASCII码只能表示128个基本拉丁字符,而汉字属于Unicode字符集,包含数千个...

    汉字转拼音、首字母、多音字java

    在Java编程语言中,处理汉字转换为拼音、获取汉字首字母以及处理多音字的问题是一项常见的任务,尤其在中文信息处理、搜索引擎优化(SEO)或者中文输入法开发等领域。这里我们将详细探讨这些知识点。 首先,我们要...

    java拼音搜索pinyin4j

    Java拼音搜索是一个在Java开发中常见的功能,尤其在构建搜索引擎或者中文输入法时,将汉字转化为拼音以便于处理和检索。Pinyin4j是一个流行的Java库,专门用于处理汉字到拼音的转换。在这个项目中,采用了Servlet三...

    将汉字转化成拼音

    标题“将汉字转化成拼音”所指的,就是这样一个功能,它可以将汉字转化为全拼或首字母拼音,使得计算机可以通过拼音来处理汉字。 `PinyinUtils.java` 是一个Java工具类,用于实现汉字到拼音的转换。Java作为一种...

    java汉字转拼音配置文件及jar.zip

    Java汉字转拼音技术是计算机处理中文文本时常用的一种方法,特别是在搜索引擎优化、语音识别、文本分析等领域有着广泛的应用。这个名为"java汉字转拼音配置文件及jar.zip"的压缩包包含了一个实现汉字到拼音转换的...

    java获取中文首字母等jar包

    在处理中文字符时,尤其是进行数据检索、排序或者关键词提取时,将中文转化为拼音能够带来很大便利。下面我们将深入探讨这个话题。 首先,`pinyin4j`是一个开源的Java库,由Barry De Zwart开发,它的主要功能是将...

    汉字转全拼或首字母Oracle存储过程

    "汉字转全拼或首字母Oracle存储过程"就是这样一个工具,它能够帮助我们高效地完成汉字到拼音的转化。 首先,我们需要了解汉字转全拼的基本原理。汉字的全拼是基于汉语拼音,每一个汉字都有对应的拼音表示。在计算机...

    汉字拼音转化

    在IT领域,汉字拼音转化是一项常见的任务,尤其是在处理中文数据、搜索引擎优化、自然语言处理以及中文输入法等应用场景中。本资源提供了一个专门用于汉字转拼音的工具类,结合了必要的jar包,使得开发者能够方便地...

    java中文转化拼音工具类

    这个"java中文转化拼音工具类"是一个实用的小程序,它可以帮助开发者快速、便捷地将汉字转换为全拼,这对于那些需要处理大量中文文本的项目来说尤其有价值。 Java中实现汉字转拼音的主要方式是通过特定的库或者API...

    JS汉语转拼音 全拼字母和首拼字母

    例如,如果你正在开发一个基于拼音的搜索系统,可以将用户输入的关键词转化为全拼,然后与数据库中的拼音数据进行匹配,从而提高搜索的准确性。 在学习和使用这些库时,需要注意一些细节,比如处理多音字(一个汉字...

    java汉字转拼音工具类

    Java中的汉字转拼音工具类主要用于将汉字转换为其对应的汉语拼音,尤其在处理中文数据时非常有用,例如在生成英文URL、关键词分析或者搜索索引时。这类工具通常基于开源库,如Pinyin4j,HanyuPinyin,或者自定义实现...

Global site tag (gtag.js) - Google Analytics