我刚刚使用SQL Server Management Studio编写了SQL Server存储过程,表定义等,并试图将它们添加到我的Mercurial源代码管理存储库中。他们被添加得很好,但现在当我改变和区分它们时,Mercurial称它们为“二进制文件”,并没有给我一个适当的统一差异。为什么Mercurial认为我的SQL文件是二进制文件?
我认为编码可能是一个问题,所以我试图重新生成脚本并指定ANSI文本文件输出,但我得到了相同的行为。我可以在记事本中查看它们,没有任何奇怪的角色出现。为什么Mercurial认为这些文件是二进制的?否则,如果有人可以推荐一个用于脚本化SQL Server数据库的好工具,这可能不会导致此问题,那也可以。
要明确,这不是Unicode的问题。它是UTF-16,它嵌入了空值。 UTF-8不会,除非你实际使用U + 0000(一个SQL文件通常不会)。 – 2010-03-02 22:04:22
很高兴知道为什么hg认为它是二元的,但最好找到一个修复mercurial来迫使它改变主意。重新保存所有脚本是非常糟糕的解决方法。问题在于mercurial,而不是在文件中。 – Stan 2012-01-24 09:41:24
答案对我很有帮助,但我使用了“Unicode(UTF-8无签名) - Codepage 65001”而不是ASCII – 2012-04-05 14:56:55