我试图在Ada中逐行读取文件,它是一个XML文本文件。我按照这里的说明进行操作:
http://rosettacode.org/wiki/Read_a_file_line_by_line#Ada
然而,有一个令我烦恼的问题是:" Get_Line"函数似乎不知道字节顺序标记,并将它们作为文本本身的一部分读取,这意味着当我对行进行调整时,第一个函数将始终以一些不应存在的额外字节开始。
虽然从字符串中手动删除额外的字节并不是什么大不了的事情,但是我觉得专门用于文本输入/输出的函数不知道BOM,必须有一种方法来读取ada中的文本文件而不必担心这个......有吗?
答案 0 :(得分:0)
Ada.Text_IO
来处理ISO-8859-1编码文本,因此忽略UTF-8功能是正确的。
如果Ada.Wide_Text_IO
和Ada.Wide_Wide_Text_IO
也输出字节顺序标记,当被要求读取UTF-8编码文本时,您应该考虑将其报告为GCC的错误 - 但是因为有在Ada的文本I / O包中有相当多的实现定义细节,你应该为“不会修复”的答案做好准备。
答案 1 :(得分:0)
一种可能性是使用流属性并使用UTF_8
文件类型来处理BOM读取和丢弃。