java - 读取 ASCII 编码的 XML 并保存为 UTF-8 时出现问题

标签 java xml character-encoding

我有一个 Java 应用程序,它读取一些定义为具有 ASCII 编码的 XML 数据。我通过 SAXReader 读取数据,以便将 XML 解析为文档。最后,我将 XML 保存为字符串,然后将其保存到 MySQL 数据库中。 我遇到的问题是保存到数据库失败并出现以下错误: SQL状态[HY000]; 错误代码[1366]; 不正确的字符串值:第 1 行的“p_xml_data”列的“\xEF\xBC\x93con...”

我无法找出失败的原因,但我假设它与编码类型有关。数据库表/列定义为 UTF-8。

这是我正在使用的代码片段:

    final URL url = new URL(feedUrl);
    final SAXReader reader = new SAXReader();
    reader.setValidation(false);
    reader.setIgnoreComments(true);

    Document document = reader.read(url);
    Document savedDocument = document;

    processXml(document.getRootElement());

    String xml = document.asXML().replaceAll("\\s+\n", "");

    feed.setXmlData(xml);

    // now we have the basic XML, lets save it
    feed = getSonyPSNModule().save(feed);

这是一些传入的 XML,尽管这是从文档对象的调试器中获取的。

    <?xml version="1.0" encoding="ASCII"?>
    <rss xmlns:dc="http://purl.org/dc/elements/1.1/" >
  <channel>
    <title>Name.com - Name&#xae;3 Games</title>
    <link>http://test.com</link>
    <description>Name.com - Name&#xae;3 Games</description>
    <title>Assassin's Creed&#x2122;</title>

奇怪的是,标题中有一个撇号,但商标字符编码为 &xae;

有人知道这里发生了什么吗?我一直在尝试各种方法并尝试在各个点更改编码类型,但无济于事。

希望其他人遇到过这个问题并解决了它!

最佳答案

所以你想改变编码。字节本身不应更改,因为 UTF-8 是 ASCII 的 super 字符集。

我会更改原始文本以更改编码并删除换行符。

关于java - 读取 ASCII 编码的 XML 并保存为 UTF-8 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766284/

相关文章:

sql - 如何在 SQL Server Management Studio 中将结果保存为 xml?

android - android webview 中的 Dipaly 波斯语文本(适用于不支持波斯语的手机)

Java OutputStream 读取字符串行

java - Java Servlet 和数据库连接错误

java - 在 Java 中将对象和原始数据作为参数传递有什么区别?

SQL 选择 : Take value from XML field

windows - 如何检测 UTF8 文本的等效 Windows 代码页

java - 获取 Object[] 信息到 ArrayList 并将其呈现在 ListView 布局上

java - 在 JSP 和 Apache Derby 数据库中连接 Driver Manager 时出现 Classnotfound 异常/如何为普通 Java 应用程序构建数据库连接

xml - XSD - 如何允许元素以任意顺序任意次数出现?