代码之家  ›  专栏  ›  技术社区  ›  Cheeso

将源模块从unicode转换为ascii,或者从ascii转换为ascii,是否会严重破坏差异?

  •  0
  • Cheeso  · 技术社区  · 14 年前

    在一个测试套件中,我进行了一些测试,处理分散在不同模块中的Unicode。我现在已经将它们合并到一个测试类中。

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

    Q1。 这会打破我的分歧吗?我目前在我的工作站上使用kdiff3,但是我对由tfs生成的源模块的历史diff记录更感兴趣。

    Q2。 在将模块从Unicode转换为ASCII时,我还需要了解W.R.T.源代码管理吗?

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

    2 回复  |  直到 9 年前
        1
  •  1
  •   Hans Passant    14 年前

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

    结果文件有一个BOM,就像您的UTF-16版本一样。这对于任何相当现代的diff工具(包括kdiff3)来说都应该足够好。他们会将源代码文件中的文本解码回Unicode。在几个文件上测试这个以确保。

        2
  •  1
  •   Alan Moore Chris Ballance    14 年前

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

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