我有一个 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®3 Games</title>
<link>http://test.com</link>
<description>Name.com - Name®3 Games</description>
<title>Assassin's Creed™</title>
奇怪的是,标题中有一个撇号,但商标字符编码为 &xae;
有人知道这里发生了什么吗?我一直在尝试各种方法并尝试在各个点更改编码类型,但无济于事。
希望其他人遇到过这个问题并解决了它!
最佳答案
所以你想改变编码。字节本身不应更改,因为 UTF-8 是 ASCII 的 super 字符集。
我会更改原始文本以更改编码并删除换行符。
关于java - 读取 ASCII 编码的 XML 并保存为 UTF-8 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766284/