首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OxygenXML中打开包含特殊字符的DITA文件时遇到问题

在OxygenXML中打开包含特殊字符的DITA文件时遇到问题
EN

Stack Overflow用户
提问于 2021-07-29 20:59:15
回答 1查看 59关注 0票数 0

我在打开包含特殊字符的文件时遇到问题,如é、è、ë、é、à、á、ö等。我从OxygnXML得到的错误信息是:

代码语言:javascript
复制
 File encoding (UTF8) does not support all characters from the current file.
 To ignore these errors or to replace invalid characters follow the link below to change the "Encoding errors handling" option value from REPORT to IGNORE or REPLACE. 

奇怪的是:当我修改文件时(例如,通过将'o‘替换为’o‘),我可以在OxygenXML和FontoXML.Afterwards中导入文件,我可以再次更正它们并保存文件。但是我看不出原始文件和修改后的文件有什么不同。

这是原始文件

代码语言:javascript
复制
 <p id="id-9f3a1788-a751-4f48-ed9c-9e19447ad3b0">Ze is zó zenuwachtig, dat ze bijna aan de ... moet .</p>

这是保存的更正后的文件(在本例中,来自FontoXML -只是为了显示添加的说明):

代码语言:javascript
复制
 <p id="id-9f3a1788-a751-4f48-ed9c-9e19447ad3b0">Ze is
                    z<?fontoxml-change-addition-start author-id="erik.verhaar" change-id="6f6bb382-3d43-4c5b-b35f-f857d729cf22" timestamp="1627473671530"?>ó<?fontoxml-change-addition-end change-id="6f6bb382-3d43-4c5b-b35f-f857d729cf22"?><?fontoxml-change-deletion author-id="erik.verhaar" change-id="0296c77c-863b-421f-bf5c-c0901c7a2751" text="ó" timestamp="1627473669483"?>
                    zenuwachtig, dat ze bijna aan de ... moet .</p>

原版和改版有什么不同?如何更改我的原始文件以便可以将它们导入OxygenXML?

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2021-07-30 03:22:58

文本文件(例如XML)使用字节保存在磁盘上,它们使用字符进行编辑和显示。编码负责在打开文档时将字节转换为字符(有时将多个字节转换为字符),并在保存文档时再次将字符转换为字节。有许多编码,但最流行的(如UTF-8)属于0-128 ASCII范围的字符,如a-z、A-Z,通常保存为一个字节。超出范围的字符通常保存为多个字节,具体取决于保存时使用的编码。

当打开一个XML文档时,Oxygen试图理解使用什么编码来读取它。如果XML文档具有如下标题:

Oxygen使用标题中指定的编码。如果XML文档缺少标题O2,则将后退到UTF-8。基本上,Oxygen在检测XML文件的编码时实现了XML规范:https://www.w3.org/TR/xml/#sec-guessing

在您的示例中,Oxygen检测到编码为UTF-8,并开始使用UTF-8将字节转换为字符。它遇到未使用UTF-8编码的字节序列。Oxygen不会继续加载文件,因为在这种情况下,当您将其保存回来时,可能会得到损坏的内容。

在我看来,您用来创建XML文件的另一个编辑器工具并不支持XML,它实际上并没有将XML保存为UTF-8格式,即使XML文档中的标题指定了这一点。我们实际上不知道其他编辑工具使用什么编码来保存XML,您可以尝试的一件事是在另一个编辑工具中重新打开XML文档,并将其编码标题声明从:

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>

至:

代码语言:javascript
复制
<?xml version='1.0' encoding='CP1250'?>

因为我怀疑其他编辑工具实际上是用来保存XML文档的,默认的平台编码在Windows上通常应该是CP1250。然后将XML文档保存在另一个编辑工具中,并尝试在Oxygen中重新打开它,如果可以,请将其标题编码声明改回UTF-8,并将XML文档保存在Oxygen中,以便使用UTF-8编码正确地保存它。

我制作的这组关于XML编码的旧幻灯片可能对您也很有用:https://www.oxygenxml.com/events/2018/large_xml_documents.pdf

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68582718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档