小编Dan*_*Oca的帖子

4字节UTF-8序列的字节2无效,但仅在执行JAR时?

我有这个java程序,我用TransformerFactory转换一个XML字符串,我从SQL Server数据库获取并将其写入文件,然后使用此文件生成PDF.

问题是当我用netbeans执行它时它工作正常,但如果我在项目dist文件夹中执行jar,我得到一个"4字节UTF-8序列的无效字节2".

将XML字符串的编码更改为UTF-8后,它也可以在jar中正常工作.

所以我的问题是,为什么在更改编码之前在NetBeans中运行项目而不是从JAR文件中运行?

仅在Windows中试过这个.

码:

这是SQL Server查询(原始):

SQLXML xml = null;
String xmlString = "";
while (rs.next()){
    xml = rs.getSQLXML(1);
    xmlString = xml.getString();
}
return xmlString;
Run Code Online (Sandbox Code Playgroud)

......并修改:

SQLXML xml = null;
String xmlString = "";
while (rs.next()){
    xml = rs.getSQLXML(1);
    // Note explicit UTF-8 encoding specified
    xmlString = new String(xml.getString().getBytes(),"UTF8");
 }
 return xmlString;
Run Code Online (Sandbox Code Playgroud)

在这里转型:

public static void serialize(Document doc, OutputStream out) throws Exception {
    TransformerFactory tfactory = TransformerFactory.newInstance();
    try {
        Transformer serializer = tfactory.newTransformer();
        serializer.setOutputProperty("indent", "yes");
        serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); …
Run Code Online (Sandbox Code Playgroud)

java windows encoding utf-8 xml-serialization

6
推荐指数
1
解决办法
9138
查看次数

标签 统计

encoding ×1

java ×1

utf-8 ×1

windows ×1

xml-serialization ×1