【问题标题】:What could go wrong if I convert ANSI encoded files to UTF-8?如果我将 ANSI 编码文件转换为 UTF-8,会出现什么问题?
【发布时间】:2010-09-24 08:04:47
【问题描述】:

我有一个现有的 ASP.NET 2.0 网站,存储在 Team Foundation Server 2005 中。一些页面/控件被编码为 ANSI(根据 Notepad++),并且 Content-Type 标头设置为:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>

我想将所有页面更改为 UTF-8,因此 Content-Type 标头更改为:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

除了更改元元素之外,我认为我还需要更改所有文件的编码。我可以在 Notepad++ 中做到这一点,但如果有人有更快的方法,请提及。

在 TFS 中进行合并/比较时,我可能会遇到哪些问题?

【问题讨论】:

  • 为什么不尝试一下,如果真的有问题回来?
  • 因为如果出了问题,我的整个团队都会受到影响,最后期限可能会推迟。我宁愿事先知道。

标签: asp.net tfs utf-8 ansi


【解决方案1】:

这不一定是真的。我不了解 ASP.net,但我们在 Ansi 中进行所有 php 编码,并以 UTF8 提供页面。我们所有的数据库信息也都以 UTF8 格式存储。

【讨论】:

    【解决方案2】:

    选择一个字符在 0-127 ASCII 范围以上的文件。用记事本打开它,选择另存为并选择 UTF-8 作为编码。然后看字符是否转换成功。

    要自动执行此过程,您可以编写一个应用程序,将所有文件从 ASCII 转换为 UTF-8,使用 1252 作为代码页。如果您没有超过 127 个字符,则无需担心所有这些。

    【讨论】:

      【解决方案3】:

      我刚刚发现的一些有用的东西是您可以右键单击源代码管理资源管理器中的文件,然后选择属性。然后,就 TFS 而言,您可以查看/修改编码。

      【讨论】:

        【解决方案4】:

        我会写一个 Python 脚本

        for fn in os.listdir(srcdir):
            data = open(srcdir+"\\"+fn, "rb").read().decode("windows-1252")
            data = data.replace("charset=windows-1252", "charset=utf-8")
            open(srcdir+"\\"+fn, "wb").write(data.encode("utf-8"))
        

        字符集的更新假定该特定字符串不会出现 别处;您可以通过检查更长的字符串来使其更健壮, 检查文件中是否确实存在旧文本,做正确的事 XML解析等

        您可能需要在 UTF-8 编码的前面放置一个 UTF-8 签名 数据;你在 codecs.BOM_UTF8 中找到一个

        我不知道这种变化对 TFS 有什么影响。

        【讨论】:

          【解决方案5】:

          这取决于代码库中的文本有多少使用了 ASCII 范围 0..127 之外的字符。

          您可能想先扫描一下,看看它会产生多大的影响。如果您的代码库主要是英文,那么您可能不必担心太多。

          【讨论】:

          • 只是指出他需要担心的不仅仅是代码库;如果数据库中有任何动态内容,也需要进行转换。
          • 不过,这不会影响 TFS 中的合并/比较;但是,您说得对。使用来自数据库等的数据的页面组成。
          猜你喜欢
          • 1970-01-01
          • 2010-10-26
          • 1970-01-01
          • 2014-02-17
          • 2011-11-07
          • 1970-01-01
          • 2011-11-20
          • 1970-01-01
          • 2017-02-01
          相关资源
          最近更新 更多