在Ada中读取文本文件:Get_Line也“读取”字节顺序标记

时间:2014-08-03 16:12:05

标签: ada byte-order-mark

我试图在Ada中逐行读取文件,它是一个XML文本文件。我按照这里的说明进行操作:

http://rosettacode.org/wiki/Read_a_file_line_by_line#Ada

然而,有一个令我烦恼的问题是:" Get_Line"函数似乎不知道字节顺序标记,并将它们作为文本本身的一部分读取,这意味着当我对行进行调整时,第一个函数将始终以一些不应存在的额外字节开始。

虽然从字符串中手动删除额外的字节并不是什么大不了的事情,但是我觉得专门用于文本输入/输出的函数不知道BOM,必须有一种方法来读取ada中的文本文件而不必担心这个......有吗?

2 个答案:

答案 0 :(得分:0)

指定

Ada.Text_IO来处理ISO-8859-1编码文本,因此忽略UTF-8功能是正确的。

如果Ada.Wide_Text_IOAda.Wide_Wide_Text_IO也输出字节顺序标记,当被要求读取UTF-8编码文本时,您应该考虑将其报告为GCC的错误 - 但是因为有在Ada的文本I / O包中有相当多的实现定义细节,你应该为“不会修复”的答案做好准备。

答案 1 :(得分:0)

一种可能性是使用流属性并使用UTF_8文件类型来处理BOM读取和丢弃。