有什么可以去错的,如果我转换ANSI编码的文件为UTF-8?
题
我有一个现有的ASP.NET 2.0网站,存储在团队基础服务器2005某些页面/控件被编码为ANSI(根据记事本++)和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"/>
除了改变的元元件,我假设我还需要改变所有的文件的编码。我可以在记事本++但如果任何人有任何更快的方法,请注明他们做到这一点。
我可能会面临什么样的问题,当涉及到合并/ TFS中比较?
解决方案
这取决于有多少文字的代码库使用的0..127 ASCII范围之外的字符。
您可能要扫描的那些一是看它会多大影响。如果你的代码主要是英语,那么你可能没有太多的担心。
其他提示
我会写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。
东西我刚刚发现有用的是,你可以对源代码管理资源管理器中右键单击文件,然后选择属性。然后就可以看到/远修改的编码作为TFS而言。
选取具有上述0-127 ASCII范围中的字符的文件。打开记事本,选择另存为,并选择UTF-8编码。然后查看是否该字符被转换成功。
要自动执行的程序,你可以写所有的文件转换从ASCII到UTF-8,使用1252作为代码页的应用程序。如果您没有上述127个字符,你不需要担心这些。
这不一定是真实的。我不知道ASP.net,但我们在这里做了所有的PHP代码在ANSI和服务于UTF8的页面。我们所有的数据库信息被存储在UTF8为好。
不隶属于 StackOverflow