在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">风云Ⅱ</span>中标签间的字符串提取出来.
可以注意到,上面的标签间的字符串都是Unicode码.要实现(http://htmlparser.com.cn/post/2009092320..html)里贴图的效果,还得进行Unicode向字符串的转化.
从百度百科了解到,Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码.
对于"&#加数字加分号"这种形式的字符,其中的十进制数字其实就是对应字符的唯一的十进制编码.
于是搜索到了以下转化程序:
public class CodeFormTest {
public static void main(String args[]) {
String a = "十月围城2012刺陵";
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#类 \uA054\uA055 => "中文
“Unicode转中文”是指将Unicode编码的字符串转换为中文字符显示。在C#中,这通常是透明的,因为C#的String类内部使用UTF-16编码,而中文字符在UTF-16中可以直接表示。但如果你需要手动进行转换,可以使用`Encoding`...
在VB6.0编程环境中,Unicode编码是一种标准的字符编码方式,它能够表示世界上几乎所有的文字,包括中文字符。在处理包含英文、汉字以及Unicode码的字符串时,有时我们需要进行编码之间的转换,以便正确地显示或处理...
Unicode码是一种国际标准字符编码,它能够表示世界上几乎所有的文字和符号,包括中文。Unicode码以16位或32位二进制形式存储每个字符,确保了不同语言间的兼容性和可交换性。中文转Unicode码和Unicode码转中文的过程...
Unicode转字符串软件的工作原理是接收Unicode编码,然后根据Unicode码点将其解码为对应的字符。每个Unicode码点对应一个或多个字符,这个软件能够正确地处理单字节和多字节的Unicode编码形式。在SIM800 Series的上下...
VB6.0语言,中英字符串转Unicode编码十六进制字符串源码,做成函数,可以直接调用!!包含两种方式
本文将深入探讨“字符串与Unicode互转工具”所涉及的关键知识点,包括字符串的基本概念、Unicode编码体系以及Delphi编程语言中的实现。 首先,让我们了解字符串。在计算机科学中,字符串是由字符组成的序列,可以是...
将中文字符转换为Unicode编码,可以使用`Character`类的`toChars()`方法,或者直接通过字符串的`codePointAt()`方法获取码点,然后以"\u"开头的十六进制格式表示。例如: ```java String chineseStr = "你好"; for ...
本篇文章将详细探讨如何使用C#将Unicode编码转换为汉字字符串,以及在实际应用中可能遇到的问题和解决方案。 首先,我们需要理解Unicode编码的基本概念。Unicode编码使用一对16位的数字来表示一个字符,这通常以`\u...
1数据转换:ANSI等编码、UTF8编码、UTF16编码(实际为Unicode编码)、TCHAR互转,可以先获取转换出的数据在存储时所需的大小 2字符串查找:正向查找、逆向查找、指定偏移查找 3字符串切割:正向分割、逆向分割、指定...
ANSI字符串实际上是一个历史遗留的术语,它通常指的是基于特定区域设置的本地化ASCII扩展编码,如Windows系统中的代码页(Code Page)如CP1252(用于西欧语言)或CP936(用于简体中文)。这些编码只能表示有限的字符...
这个"Unicode转换为字符串小工具"是专门用于处理Unicode编码的实用程序,帮助用户将Unicode编码转换为可读的字符串形式。这对于处理包含多种语言或者特殊字符的数据时非常有用,比如网页编码问题、文本解析、数据...
今天我们将详细介绍这三种编码方式之间的转换,包括 Ansi 转 Unicode、Unicode 转 Ansi,以及使用 wprintf 函数进行字符串输出。 Ansi 字符串 Ansi 字符串是我们最熟悉的一种编码方式,英文字符占用一个字节,汉字...
对于汉字到16进制Unicode的转换,我们需要首先获取汉字的Unicode码点,这通常通过`char.GetHashCode()`或者`char.GetUnicodeCategory()`等方法获取,然后将得到的码点转换为16进制字符串。 在实际开发中,我们可能...
C++实现中英文与UNICODE十六进制字符串互转 实现 "中文English" --> "4e2d65870045006e0067006c006900730068" 和 "4e2d65870045006e0067006c006900730068" --> "中文English" 这么一个转换,上述的都是字符...
字符编码转换 字符串到Unicode的转换等 字符高低位转换等。
这个新函数的核心是将宽字符转换为UTF-8编码,因为JSON规范要求JSON字符串必须使用UTF-8编码。你可以使用`wcstombs()`或`wcstoucs()`这样的函数进行转换,然后调用原生的`cJSON_Parse()`处理UTF-8字符串。 在解析...
在LabVIEW中,字符串是由字符组成的数组,可以是ASCII或Unicode编码。十六进制字符串则是一种数值表示,每个字符代表4位二进制数,相当于一个字节(8位)。因此,一个两位的十六进制字符可以对应一个ASCII字符。 要...
在Java中,字符串默认采用Unicode编码,具体来说是UTF-16格式。UTF(Unicode Transformation Format)是Unicode的一个实现方式,用于将Unicode码点转换成实际的字节序列,以便在网络中传输或在存储介质中保存。UTF有...
1. **`public String toUnicodeString(String chineseStr)`**:此方法接收一个中文字符串,然后将其转换为 Unicode 字符串形式,每个字符用 `\u` 开头,后面跟随四位十六进制数字表示其码点。例如,"你好" 变为 `\u4...