gpt4 book ai didi

java - 结果集编码问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:36 26 4
gpt4 key购买 nike

我的结果集包含特殊字符和变音符号。我尝试了不同的解决方案,第一个打印出文本而没有编码问题的解决方案是:

List<QuerySolution> list = ResultSetFormatter.toList(myResultSet);  
for (QuerySolution querySolution : list) {
System.out.println(querySolution); }

与此相反,我更喜欢直接输出,例如:

ResultSetFormatter.out(System.out, myResultSet, myQuery);

但是当我使用这个时,我的编码问题又出现了。我在 java 中使用 jena 库。

最佳答案

问题是您的终端使用非 UTF-8 编码。

各种 ResultSetFormatter.out 方法采用 OutputStream 而不是 Writer,也就是说,它们将输出字节而不是字符。因此,它需要选择一种编码,而 UTF-8 是显而易见的选择。

您可能想知道 System.out 是怎么回事。它有点过时,是一个混合 OutputStream,但具有一些接受字符串的方法,并将使用平台默认编码进行编码。

因此,第一种方法有效 - System.out.println(querySolution) 使用与您的终端匹配的默认平台编码 - 而第二种方法将使用 UTF-8。

ResultSetFormatter没有接受 Writer 的方法(遗漏),所以我建议使用:

System.out.println(ResultSetFormatter.asText(myResultSet, myQuery));

这对于小型结果集来说很好,或者:

TextOutput fmt = new TextOutput(myQuery);
fmt.format(new OutputStreamWriter(System.out, Charset.defaultCharset()), myResultSet);

它将进行流式传输,并且应使用与 System.out.println() 相同的编码。

关于java - 结果集编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com