`
sulifeng
  • 浏览: 41319 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Unicode编码转中文字符串

    博客分类:
  • Java
阅读更多
  在HtmlParser包中一个解析html中文本的最基本的方法是:
Parser parser=new Parser(url); 
        NodeFilter filter=new HasAttributeFilter("id","s"); 
        NodeList nodelist=parser.extractAllNodesThatMatch(filter); 
        for(Node node:nodelist.toNodeArray()) 
        { 
            System.out.print(node.toPlainTextString().trim()); 
        } 

  它的作用是将<span id="s">&#39118;&#20113;&#8545;</span>中标签间的字符串提取出来.
  可以注意到,上面的标签间的字符串都是Unicode码.要实现(http://htmlparser.com.cn/post/2009092320..html)里贴图的效果,还得进行Unicode向字符串的转化.
  从百度百科了解到,Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码.
对于"&#加数字加分号"这种形式的字符,其中的十进制数字其实就是对应字符的唯一的十进制编码.
  于是搜索到了以下转化程序:
public class CodeFormTest {
	public static void main(String args[]) {
		String a = "&#21313;&#26376;&#22260;&#22478;2012&#21050;&#38517;";
		String str = a.replaceAll(";&#", ",").replace("&#", ",").replaceAll(";", ",").replace(" ", "");
		System.out.println(str);
		String[] s2 = str.split(",");
		String s1 = "";
		// System.out.println(s2.length);

		for (int i = 1; i < s2.length; i++) {

			int v = Integer.parseInt(s2[i], 10);
			if (v < 19968 || v > 40895) {

				s1 = s1 + v;
			} else {
				s1 = s1 + (char) v;

			}
			
		}
		System.out.println(s1);
	}
}

  首先,它将原字符串中的";&#"全部替换成逗号,再将字符串开始,末尾和由单纯数字分割开的&#和分号替换成逗号,再用spilt方法获得逗号间的数字.最后用(char)强制转换后即可输出.
  值得注意的是,在Unicode 编码范围中,中文字符的范围是十六进制的4E00-9FBF,也就是十进制的19968-40895,所以很容易把2012这部"数字"电影正确解析出来.程序最后输出的结果是:
,21313,26376,22260,22478,2012,21050,38517,
十月围城2012刺陵

  还有个小问题就是,可能存在恰好有19968-40895之间的数字必须当成十进制数字来解析的情况.
 
分享到:
评论

相关推荐

    UnicodeCode编码转换成字符串编码的C#类

    UnicodeCode编码转换成字符串编码的C#类 \uA054\uA055 =&gt; "中文

    Unicode转中文 Unicode字符串 转中文编码

    “Unicode转中文”是指将Unicode编码的字符串转换为中文字符显示。在C#中,这通常是透明的,因为C#的String类内部使用UTF-16编码,而中文字符在UTF-16中可以直接表示。但如果你需要手动进行转换,可以使用`Encoding`...

    VB6.0 Unicode码 汉字 互转,支持混合互转.zip

    在VB6.0编程环境中,Unicode编码是一种标准的字符编码方式,它能够表示世界上几乎所有的文字,包括中文字符。在处理包含英文、汉字以及Unicode码的字符串时,有时我们需要进行编码之间的转换,以便正确地显示或处理...

    Unicode码转中文和中文转Unicode码的最简便的方法

    Unicode码是一种国际标准字符编码,它能够表示世界上几乎所有的文字和符号,包括中文。Unicode码以16位或32位二进制形式存储每个字符,确保了不同语言间的兼容性和可交换性。中文转Unicode码和Unicode码转中文的过程...

    Unicode转字符串软件

    Unicode转字符串软件的工作原理是接收Unicode编码,然后根据Unicode码点将其解码为对应的字符。每个Unicode码点对应一个或多个字符,这个软件能够正确地处理单字节和多字节的Unicode编码形式。在SIM800 Series的上下...

    VB_中英字符串转Unicode编码十六进制字符串

    VB6.0语言,中英字符串转Unicode编码十六进制字符串源码,做成函数,可以直接调用!!包含两种方式

    字符串与Unicode互转工具

    本文将深入探讨“字符串与Unicode互转工具”所涉及的关键知识点,包括字符串的基本概念、Unicode编码体系以及Delphi编程语言中的实现。 首先,让我们了解字符串。在计算机科学中,字符串是由字符组成的序列,可以是...

    java 中文Unicode转换

    将中文字符转换为Unicode编码,可以使用`Character`类的`toChars()`方法,或者直接通过字符串的`codePointAt()`方法获取码点,然后以"\u"开头的十六进制格式表示。例如: ```java String chineseStr = "你好"; for ...

    C#将Unicode编码转换为汉字字符串的简单方法

    本篇文章将详细探讨如何使用C#将Unicode编码转换为汉字字符串,以及在实际应用中可能遇到的问题和解决方案。 首先,我们需要理解Unicode编码的基本概念。Unicode编码使用一对16位的数字来表示一个字符,这通常以`\u...

    C++ gbk转unicode、ansi转unicode,字符串查找、切割、转十六进制、转二进制、转义,随机数等数据处理类源码

    1数据转换:ANSI等编码、UTF8编码、UTF16编码(实际为Unicode编码)、TCHAR互转,可以先获取转换出的数据在存储时所需的大小 2字符串查找:正向查找、逆向查找、指定偏移查找 3字符串切割:正向分割、逆向分割、指定...

    ANSI字符串与Unicode字符串的相互转换

    ANSI字符串实际上是一个历史遗留的术语,它通常指的是基于特定区域设置的本地化ASCII扩展编码,如Windows系统中的代码页(Code Page)如CP1252(用于西欧语言)或CP936(用于简体中文)。这些编码只能表示有限的字符...

    Unicode 转换为字符串小工具

    这个"Unicode转换为字符串小工具"是专门用于处理Unicode编码的实用程序,帮助用户将Unicode编码转换为可读的字符串形式。这对于处理包含多种语言或者特殊字符的数据时非常有用,比如网页编码问题、文本解析、数据...

    Ansi、Unicode、UTF8字符串之间的转换,wprintf

    今天我们将详细介绍这三种编码方式之间的转换,包括 Ansi 转 Unicode、Unicode 转 Ansi,以及使用 wprintf 函数进行字符串输出。 Ansi 字符串 Ansi 字符串是我们最熟悉的一种编码方式,英文字符占用一个字节,汉字...

    C#16进制unicode字符和汉字相互转换

    对于汉字到16进制Unicode的转换,我们需要首先获取汉字的Unicode码点,这通常通过`char.GetHashCode()`或者`char.GetUnicodeCategory()`等方法获取,然后将得到的码点转换为16进制字符串。 在实际开发中,我们可能...

    C++实现中英文与UNICODE十六进制字符串互转

    C++实现中英文与UNICODE十六进制字符串互转 实现 "中文English" --&gt; "4e2d65870045006e0067006c006900730068" 和 "4e2d65870045006e0067006c006900730068" --&gt; "中文English" 这么一个转换,上述的都是字符...

    字符编码转换 字符串到Unicode的转换等

    字符编码转换 字符串到Unicode的转换等 字符高低位转换等。

    解析unicode的json字符串的cJSON,支持宽字符串

    这个新函数的核心是将宽字符转换为UTF-8编码,因为JSON规范要求JSON字符串必须使用UTF-8编码。你可以使用`wcstombs()`或`wcstoucs()`这样的函数进行转换,然后调用原生的`cJSON_Parse()`处理UTF-8字符串。 在解析...

    十六进制字符串至普通转化_十六进制字符串转普通字符串_labview十六进制_

    在LabVIEW中,字符串是由字符组成的数组,可以是ASCII或Unicode编码。十六进制字符串则是一种数值表示,每个字符代表4位二进制数,相当于一个字节(8位)。因此,一个两位的十六进制字符可以对应一个ASCII字符。 要...

    java实现十六进制字符unicode与中英文转换示例

    在Java中,字符串默认采用Unicode编码,具体来说是UTF-16格式。UTF(Unicode Transformation Format)是Unicode的一个实现方式,用于将Unicode码点转换成实际的字节序列,以便在网络中传输或在存储介质中保存。UTF有...

    中文转化为unicode格式的方法类

    1. **`public String toUnicodeString(String chineseStr)`**:此方法接收一个中文字符串,然后将其转换为 Unicode 字符串形式,每个字符用 `\u` 开头,后面跟随四位十六进制数字表示其码点。例如,"你好" 变为 `\u4...

Global site tag (gtag.js) - Google Analytics