我正在这样做:
set fileIdSource [open 20801.iim "r"]
set file_data [read $fileIdSource]
puts "=========\n$file_data\n========="
close $fileIdSource
文件 20801.iim 是:
然后我在 tcl 中运行它,我在“VERSION”之前得到 2 个连线字符:
这发生了吗? TNX。
最佳答案
这两个字符(可能)是 Byte Order Mark ( Material list )。文件写入的编码可能是 UTF-8,具有某种程度的编码,并且它被稍微误解了。 Tcl 不处理 BOM(Tcl 脚本除外),因为在某些情况下程序员确实需要关心。它们应该是写在文件开头的单个字符(它被写为多字节序列)并且应该由 Tcl 作为单个字符读取,但由于某种原因,这里没有发生。 (您的测试平台上编码系统
返回的值是多少?)
您可以忽略它们,甚至删除它们(它们应该只出现),只要在写出字符串时将 BOM 放回去即可。编写 BOM 只需执行以下操作即可:
puts -nonewline $theChannel "\ufeff"
在向该文件写入任何其他内容之前(前提是您使用的是基于 Unicode 的编码之一)。但通常完全没有必要这样做,除非您正在编写完整的多字节编码或在 Windows 上编写 UTF-8(因为原因)。
关于linux - Tcl打开文件然后读取,添加的连线字符在原始文件中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032444/