内务系统导出Marc数据在记事本里面显示乱码是什么原因? - DigitalPlatform/dp2 GitHub Wiki

内务系统导出Marc数据时,编码方式和预览效果正常,但是导出结果在记事本里面显示乱码是什么原因?

---dp2 里面 MARC 文件对话框的右边部分是专门开发的。看着对头,那就是对头的

一般来说,导出到 ISO2709 以后,就不太适合用普通文本编辑器查看。因为文本编辑器本身会有问题,会发生显示错误,会误导人。

应该将所导出的文件直接导入到一个图书馆系统,如果能正确导入,就可以了。导入回到 dp2 的另外一个库也可以,也可以作为检验标准

Windows 环境下的记事本比较复杂。有很多高深的课题。比如 UTF-8 编码方式的文件,Unix 世界习惯没有 Preamble 的格式,Windows 世界则习惯有 Preamble 的格式。Preamble 是文件头部的用于帮助程序判断编码方式或者大小端序的少量字节。

(UTF-8 编码方式的)ISO2709 文件创建的时候,按照约定俗成是不应该有 Preamble(3 个 bytes)。这样也符合 Unix 世界的规则。但这不太符合 Windows 下记事本的规则。记事本有可能错判这个文件的编码方式。

所以要关注这个文件的编码方式到底对不对,应该用 VS 的二进制编辑器这样的工具来看。文件前面的 Preamble 就可以看得清清楚楚。文件开头的 preamble 也叫 BOM

记事本面对没有 BOM 的 UTF-8 编码方式的文件,只能乱猜它的编码方式,有可能猜错。所以用记事本要小心,它可能会骗人。就是说没有 BOM 的话,就要乱猜了。如果是台湾人可能是 Big-5,大陆极有可能是 GB2312,新加坡(美国)可能是 UTF-8。Windows 里面有个糊涂的称呼叫做 Ansi 字符集,就是说 Windows 安装时候的本地字符集,不确定是哪一个,大陆是 GB,台湾可能是 Big-5。

记事本里面看到乱码,它意思是说“你这个文件没有 BOM 哟,我乱猜了一个编码方式给你显示了”