小编Agi*_*Pro的帖子

transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8")不起作用

我有以下方法将XMLDom写入流:

public void writeToOutputStream(Document fDoc, OutputStream out) throws Exception {
    fDoc.setXmlStandalone(true);
    DOMSource docSource = new DOMSource(fDoc);
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.INDENT, "no");
    transformer.transform(docSource, new StreamResult(out));
}
Run Code Online (Sandbox Code Playgroud)

我正在测试其他一些XML功能,这只是我用来写入文件的方法.我的测试程序生成了33个测试用例,其中写出了文件.其中28个具有以下标题:

<?xml version="1.0" encoding="UTF-8"?>...
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,现在有一个测试用例产生:

<?xml version="1.0" encoding="ISO-8859-1"?>...
Run Code Online (Sandbox Code Playgroud)

还有四种产品:

<?xml version="1.0" encoding="Windows-1252"?>...
Run Code Online (Sandbox Code Playgroud)

您可以清楚地看到,我将ENCODING输出键设置为UTF-8.这些测试曾用于早期版本的Java.我有一段时间(超过一年)没有运行测试,但今天在"Java(TM)SE运行时环境(版本1.6.0_22-b04)"上运行我得到了这个有趣的行为.

我已经验证导致问题的文档是从最初具有这些编码的文件中读取的.似乎新版本的库试图保留已读取的源文件的编码.但这不是我想要的......我真的希望输出为UTF-8.

有没有人知道可能导致变压器忽略UTF-8编码设置的任何其他因素?还有什么必须在文档上设置,以忘记最初读取的文件的编码?

更新:

我在另一台机器上检查了同一个项目,在那里构建并运行了测试.在那台机器上,所有测试都通过了!所有文件的标题中都有"UTF-8".该机器具有"Java(TM)SE运行时环境(版本1.6.0_29-b11)"两台机器都运行Windows 7.在新机器上运行正常,jdk1.5.0_11用于进行构建,但是在旧机器上运行机器jdk1.6.0_26用于构建.用于两个版本的库完全相同.在构建时是否可能与1.5的JDK 1.6不兼容?

更新:

4.5年后,Java库仍然被打破,但由于Vyrx的建议,我终于有了一个合适的解决方案!

public void writeToOutputStream(Document fDoc, OutputStream out) throws Exception {
    fDoc.setXmlStandalone(true);
    DOMSource docSource = new DOMSource(fDoc);
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    transformer.setOutputProperty(OutputKeys.INDENT, "no");
    out.write("<?xml version=\"1.0\" …
Run Code Online (Sandbox Code Playgroud)

java xml xml-serialization transformer-model

13
推荐指数
1
解决办法
3万
查看次数

如何将JSON对象流式传输到HttpURLConnection POST请求

我看不出这段代码有什么问题:

JSONObject msg;  //passed in as a parameter to this method

HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setDoInput(true);
httpCon.setUseCaches(false);
httpCon.setRequestProperty( "Content-Type", "application/json" );
httpCon.setRequestProperty("Accept", "application/json");
httpCon.setRequestMethod("POST");
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
msg.write(osw);
osw.flush();
osw.close();    
os.close();     //probably overkill
Run Code Online (Sandbox Code Playgroud)

在服务器上,我根本没有发布帖子内容,零长度字符串.

java post httpurlconnection

13
推荐指数
2
解决办法
5万
查看次数

可以使Apache Solr索引在事务上与被索引的DB一致吗?

我是Solr的新手.我正在尝试创建一个将结构化数据存储在数据库中的服务器,并且可以使用Solr/Lucene进行搜索.服务器可以集群到任意数量的相同节点中以实现高可用性.

似乎标准配置Solr将索引存储在文件系统上的文件中.这似乎引入了一致性和聚类的一些问题.

如何使索引在事务上与DB保持一致?有没有办法做到这一点?(例如,通过提交Solr索引协调提交到DB的某种方式?)

有没有办法将索引存储在(关系)数据库中?这将解决一致性问题和集群问题,但我没有找到很多关于如何做到这一点的文献.

配置为群集时,每个群集节点是否需要维护自己的索引副本.目前尚不清楚Solr的多个实例是否可以更新单个索引.

或者 - 我们是否放弃接受索引不保证一致,每天重建它?人们通常对此做些什么?

lucene solr transactions consistency cluster-computing

11
推荐指数
1
解决办法
3516
查看次数

AngularJS路由参数包含任何字符

我是AngularJS的新手,请原谅我,如果这是显而易见的,但我正在寻找能够回答这个棘手问题的人.我正在实现一个应用程序,需要将一些参数传递给特定视图以显示有关书籍的详细信息.基本上我希望能够使用以下路由表达式:

bookApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/catalog', {
            templateUrl: 'cataloglist.htm',
            controller: 'catCtrl'
        }).
        when('/book/:title/:chapter', {
            template: 'chapterdetail.htm',
            controller: 'chapterCtrl'
        }).
        otherwise({
            template: 'oops ... do not understand that route',
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

表达式/book/:title/:chapter应该允许我传递书名的名称.我希望能够通过任何一本书的任何标题.为了确保正确分隔内容,我将对标题值进行URL编码,以便在编码值中没有斜杠,并且该值将由斜杠字符清楚地分隔.这是构造包含值的URL的常规方法.

问题是存在包含斜杠字符的书名(例如The 3/5 solution)这是URL编码为The+3%2F5+Solution.所以可以像这样构建一个URL:

 /app/#/book/The+3%2F5+Solution/The%20Beginning
Run Code Online (Sandbox Code Playgroud)

但是,我的经验似乎表明,在将其分解为参数之前,整个值都是URL解码的!这意味着任何带有斜杠的数据值都将被误解为两个值,并且路由参数的模式匹配被破坏,并且只传递值的前半部分.此外,该章节可能有斜杠在名称中也是如此.

如果我正在制作REST服务,我会对该值进行URL编码,并且在每个片段被解码之前,URL将被解析为片段.例如,我可以在URL中使用查询参数,如下所示:

app.jsp?title=The+3%2F5+Solution&chapter=The%20Beginning
Run Code Online (Sandbox Code Playgroud)

这将正常工作.使用URL编码,我可以在标题中传递任何字符串值.我本来希望路由参数可以做同样的事情......但我已经提到过我对AngularJS很新.

%2F在确定碎片之前解码为斜线似乎是一个非常严重的错误.显然,您根本无法将带斜杠的值作为路由参数传递. 我在这里错过了什么吗? 什么是允许我安全地传递其中包含任何可能字符的书名(以及带有任何字符的章节标题)作为路线参数的解决方案?

javascript url-routing url-encoding angularjs

7
推荐指数
1
解决办法
7712
查看次数

财务报表API/XBRL

想知道,有谁知道如何从埃德加自动获取数据?(免费或其他)

我已经考虑从雅虎/谷歌获取它,但他们整合信息(如不同的收入类别将分组为一个收入项目).我看过像Zacks这样的一些付费网站,但他们也在进行整合.

或者,有没有办法通过api或其他方式使用XBRL加载不同的语句?我不能说我完全理解XBRL是如何工作的,但它似乎是一个XML接口来访问报告的不同语句(由公司自己发布).

financial xbrl interstage

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

如何最好地将byte []数组转换为字符串缓冲区

我有一些byte []数组变量,我需要转换为字符串缓冲区.

有这种转换的方法吗?

谢谢

谢谢大家的回复.但是我没有说清楚....我正在使用一些byte []数组预先定义为我的java程序的类声明下的公共静态".这些"领域"在过程的"生命"中被重用.当程序发出状态消息时,(写入文件)我已经定义了一个用于格式化状态消息的字符串缓冲区(mesg_data).所以当程序执行时我尝试了msg2 = String(byte_array2)我得到一个编译错误:找不到符号符号:方法String(byte [])location:class APPC_LU62.java.LU62XnsCvr convrsID = String(conversation_ID);

例:

public class LU62XnsCvr extends Object
           .
           .
static String convrsID ; 
static byte[] conversation_ID = new byte[8] ;
Run Code Online (Sandbox Code Playgroud)

所以我不能使用字符串变量的"动态"定义,因为在多次出现中使用相同的变量.

我希望自己明确表示非常感谢

家伙

java

5
推荐指数
2
解决办法
1万
查看次数

为什么ondrop无法正常工作?

我试图使拖放工作正常,但是我将一个函数连接到“ ondrop”事件,但是从未调用该函数。

这是一个柱塞:http ://plnkr.co/edit/qGEdYO8okRZAR3bnZrNk?p=preview

这是简单的接线示例:

<script>
var holder = document.getElementById('holder');

holder.ondragenter = function (e) { 
    this.className = 'nicenice lvl-over'; 
    return false; 
};
holder.ondragleave = function () { 
    this.className = 'nicenice'; 
    return false; 
};
holder.ondrop = function (e) {
    e.preventDefault();
    console.log("GOT DROP EVENT");
    alert("dropped here");
};
</script>
Run Code Online (Sandbox Code Playgroud)

我把警报放在那儿只是为了看看是否可以得到一些有关放置事件的指示。我添加了ondragenter和ondragleave主要是为了查看是否有任何事件。我似乎得到了那些事件。我省略了接收放置事件所需的哪些内容?还需要其他什么魔术?

我的目标是将其与AngularJS结合起来,但是我需要简化才能在此处提出问题。

javascript events drag-and-drop

4
推荐指数
1
解决办法
3982
查看次数

如何使用 Gradle 7.0 发布到 Maven Repo

我正在寻找有关如何使用 Gradle 7.0 将库发布到公共 Maven 存储库的工作文档。

我已经在 Maven 注册了一个帐户(实际上是 Sonatype),并跳过了验证环节,所以看起来已经准备好了。我尝试过手动发布,但准备自动化。

Maven 文档适用于 Gradle 6 及更低版本。所需的特定模块已从 Gradle 中删除,并且对此有明确的信息。“maven”已被删除,您必须使用“maven-publish”。看来一切都变了,Maven 上的文档对于 Gradle 7 来说已经没用了

据我所知,Gradle 的文档是错误的。它说要包含以下内容才能应用该插件:

plugins {
    id 'maven-publish'
}
Run Code Online (Sandbox Code Playgroud)

足够好,但文档随后说有任务,但这些任务不存在。该文档声称有:

  • generatePomFileForPubNamePublication - 没有generatePomFile任务
  • publishPubNamePublicationToRepoNameRepository - 也不在那里
  • publishPubNamePublicationToMavenLocal - 我有“publishToMavenLocal”,是同一件事吗?
  • 发布- 有一个任务,但它什么也不做。它说它“成功”,但什么也没做。
  • publishToMavenLocal - 它存在,但是当我运行它时,它什么也不做。据记录,它会在 users/USER/.m2 文件夹中创建文件,但实际上那里没有放置任何内容。

但是,以下是我可以通过运行任务 --all 获得的任务:

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that …
Run Code Online (Sandbox Code Playgroud)

java sonatype gradle maven-publish android-gradle-7.0

3
推荐指数
1
解决办法
5425
查看次数