.net 将源模块从Unicode转换为ASCII或从ASCII转换为Unicode是否会严重影响差异?

.net 将源模块从Unicode转换为ASCII或从ASCII转换为Unicode是否会严重影响差异?,.net,unicode,version-control,tfs,.net,Unicode,Version Control,Tfs,在一个测试套件中,我的测试分散在各个模块中处理unicode。我现在已经将它们合并到一个测试类中 不再包含任何unicode的.cs源模块仍采用unicode编码,因此是其所需大小的2倍。我想将它们转换回ASCII,以节省空间,并缩短编辑器和工具中这些文件的加载时间 Q1.这会打破我的差异吗?我目前在工作站上使用Kdiff3,但我更感兴趣的是TFS生成的源模块的历史差异记录 Q2.在将模块从Unicode转换为ASCII时,我还需要了解w.r.t.源代码管理吗 我的具体情况是.NET和TFS,但

在一个测试套件中,我的测试分散在各个模块中处理unicode。我现在已经将它们合并到一个测试类中

不再包含任何unicode的.cs源模块仍采用unicode编码,因此是其所需大小的2倍。我想将它们转换回ASCII,以节省空间,并缩短编辑器和工具中这些文件的加载时间

Q1.这会打破我的差异吗?我目前在工作站上使用Kdiff3,但我更感兴趣的是TFS生成的源模块的历史差异记录

Q2.在将模块从Unicode转换为ASCII时,我还需要了解w.r.t.源代码管理吗


我的具体情况是.NET和TFS,但我认为这个问题可能适用于任何源代码控制系统和编程语言

为什么不将所有内容转换为UTF-8?它可以处理UTF-16所能处理的一切(很明显,这就是您所说的“Unicode”),但ASCII字符每个只占用一个字节,就像ASCII字符一样。您不必担心某些文件的编码与其他文件不同。如果您的diff工具首先将文件解码为通用编码,那么它不应该破坏旧的diff


将UTF-16转换为ASCII是一个非常糟糕的主意。你说这些文件中只有ASCII码,但如果你错了,非ASCII码字符就会丢失。也就是说,除非您使用Java的
native2ascii
实用程序之类的东西,它可以将非ASCII字符转换为Unicode转义码(例如,
Ã->\u00C3
),但这肯定会打破您的差异。

奇怪的是,它被转换为UTF-16。但从VisualStudio2008中修复它非常容易。使用文件+另存为,保持相同的名称,单击“保存”按钮上的箭头,然后选择“使用编码保存”。单击“编码”组合框并选择UTF8。这是VS2008使用的默认编码

结果文件有一个BOM表,就像您的UTF-16版本一样。对于任何合理的现代diff工具,包括KDiff3,这应该足够好了。他们将把源代码文件中的文本解码回Unicode。对几个文件进行测试以确保