当前位置: 首页 > 知识库问答 >
问题:

Jena I/O中的编码问题

水昊阳
2023-03-14

我正在用Jena生成一些RDF文件。整个应用程序使用utf-8文本。源代码也存储在UTF-8中。

当我在控制台上打印包含非英语字符的字符串时,我会得到正确的格式,例如est unlieu généralement officelle assis...

然后,我使用RDF writer输出文件:

Model m = loadMyModelWithMultipleLanguages()
log.info( getSomeStringFromModel(m) ) // log4j, correct output
RDFWriter w = m.getWriter( "RDF/XML" ) // default enc: utf-8
w.setProperty("showXmlDeclaration","true") // optional  
OutputStream out = new FileOutputStream(pathToFile)
w.write( m, out, "http://someurl.org/base/" )
// file contains garbled text

RDF文件以:<?xml version=“1.0”?>开头。如果添加utf-8,则不会发生任何变化。

默认情况下,文本应该编码为UTF-8。得到的RDF文件验证正常,但当我用任何编辑器/Visualiser(vim、Firefox等)打开它时,非英文文本都被弄乱了:EstunLieuG√Brown N√Brown Ralement Oficielle assis...EstunLieuG\u221A\u00A9N\u221A\u00A9Ralement Oficielle assis...。(无论哪种方式,从用户的观点来看,这显然是不能接受的)。Jena支持的任何输出格式(RDF、NT等)也会出现同样的问题。

我实在找不到合乎逻辑的解释。官方文件似乎没有提到这个问题。

有什么提示或者测试我能找到的吗?

共有1个答案

江仲渊
2023-03-14

我猜测您的字符串是乱七八糟的,您的printStringFromModel()方法只是碰巧以一种意外地使它们正确显示的方式输出了它们,但是如果没有更多的信息就很难说。

您指示Jena在RDF/XML文件中包含一个XML声明,但不要说明Jena在XML声明中声明了什么编码(如果有的话)。这会很有帮助。

您也没有显示如何在printStringFromModel()方法中打印字符串

另外,在Firefox中,转到View菜单,然后转到Character Encoding。选择了什么编码?如果它不是UTF-8,那么当您选择UTF-8时会发生什么?当选择其他编码时,你会得到它来正确地显示东西吗?

 类似资料:
  • 最近,我们正在将java构建作业从serverA迁移到serverB,java源代码(包含中文字符)在使用Ant的原始serverA上编译良好( ),但是,当我们将相同的代码签出到新的serverB并运行相同的Ant脚本时,出现了编码错误,如“用于编码GBK的Unmappable character”(Unmappable character for encoding GBK)。(JDK版本相同)

  • 本文向大家介绍浅谈编码,解码,乱码的问题,包括了浅谈编码,解码,乱码的问题的使用技巧和注意事项,需要的朋友参考一下 在开发的过程中,我们不可避免的会遇到各种各样的编码,解码,或者乱码问题,很多时候,我们可以正常的解决问题,但是说实在的,我们有可能并不清楚问题到底是怎么被解决的,秉承知其然,更要知其所以然的理念,经过一番研究,就有了下面的这篇文章,鉴于本人功力尚浅,有错误请给予纠正 :-) 编码解码

  • 我有一个(非常简单的)java Spring Boot/REST服务,它从输入中呈现PDF并使用IntelliJ对其进行测试。 我使用pdfbox作为创建此类pdf的工具。 一个特点是,除了它想要的常规内容外,客户端还可以将附件作为字节[]提供。 当用户尝试该服务时,最终文档只有附件部分的空白页。 使用IntelliJ和HTTP REST客户端进行了尝试,但遇到了相同的问题 当我注意到使用post

  • 当从其中一个web服务获取数据时,引号(“)将显示为(?)当我使用Rest模板时。我在chrome上的postman中测试了web服务,并给出了正确的字符。我尝试编码UTF-8,但没有成功。 我检查了以下是从Web服务提供商编码: 高速缓存控制→私有连接→关闭内容编码→gzip内容长度→3407内容类型→text/xml; charset=ISO-8859-1日期→周三,2015 13:35:53

  • 通常情况下,我不会在这里问问题,但我面对的问题太可怕了,我再也无法独自应对了,我已经筋疲力尽了。无论如何,我要描述我所发现的一切,我发现了许多有趣的事情,我想相信这些事情会帮助别人帮助我。 软件版本:-OS: Windows 10 Pro version: 1909 build: 18363.720-IntelliJ IDEA: 2019.2.4 Ultime-Gradle包装版本: 5.2.1-

  • 在Windows下使用时遇到问题。问题是在windows下该函数返回非UTF8编码的字符串(因为windows不支持UTF-8区域设置)。我在谷歌上搜索了很多关于这个主题的信息,找到了许多建议,只需使用,但这没有帮助。我在后面得到一个非常奇怪的字符串。还有另一种解决方案:使用例如: 这是可行的,但只有在开发一个精确的区域时才是好的。但我需要一个通用的解决方案。你可以建议: 但这不起作用,因为即使是