Java字符串字符集解析
我正在使用JSOUPAPI解析一些网页。但是我在1个字符集中得到这些页面,并且必须将它们解析到另一个字符集 问题是:如何将第1行解析为第2行Java字符串字符集解析,java,character-encoding,Java,Character Encoding,我正在使用JSOUPAPI解析一些网页。但是我在1个字符集中得到这些页面,并且必须将它们解析到另一个字符集 问题是:如何将第1行解析为第2行 String str1 = "Um grupo ligado à al-Qaeda assumiu o " + "ataque e ameaçou fazer outros."; String str2 = "Um grupo ligado à al-Qaeda assumiu o "
String str1 = "Um grupo ligado à al-Qaeda assumiu o "
+ "ataque e ameaçou fazer outros.";
String str2 = "Um grupo ligado à al-Qaeda assumiu o "
+ "ataque e ameaçou fazer outros.";
//(The text above translate to some news about WTC)
我不是这方面的专家,但我相信您正在寻找的答案是:我没有真正测试过,但在我需要使用类
org.w3c.tidy.tidy
将HTML转换为XML时,它对我非常有帮助。这会自动转换实体
static String str1 = "Um grupo ligado à al-Qaeda assumiu o "
+ "ataque e ameaçou fazer outros.";
public static void main(String[] args) throws Exception {
System.out.println(cleanData(str1));
}
private static String cleanData(String data) throws UnsupportedEncodingException {
Tidy tidy = new Tidy();
tidy.setNumEntities(true); // to num entities
tidy.setPrintBodyOnly(true); // only print the content
tidy.setWraplen(Integer.MAX_VALUE); // wrap
ByteArrayInputStream inputStream = new ByteArrayInputStream(data.getBytes("UTF-8"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
tidy.parseDOM(inputStream, outputStream);
return outputStream.toString("UTF-8");
}
如果您愿意,还可以获取文档的实例
public org.w3c.dom.Document parseDOM(Reader in, Writer out)
public org.w3c.dom.Document parseDOM(InputStream in, OutputStream out)
有点像jtiy解决方案:命名实体,如à代码>在w3c.org的.dtd文件中定义,该文件维护HTML这不是UTF-8到ASCII的转换。UTF-8≠ 命名字符实体。ASCII码≠ 数字字符引用。我只看到命名实体被数字实体替换-这是你真正需要的吗?我需要解析a到b。如果我把名字弄混了,我会很生气的。我尝试了3到4种不同的解决方案,但都没有效果。或者在SO编辑器中键入时有问题吗?也许您的初始数据显示了和actualá和actualç,您希望生成数字实体。但是没有未编码的文本。实际输入的字符编码是什么?我已经添加了您的str1
。删除输入编码。并指定带有编号实体的输出。