我有一些文本,将使用 UTF-8 和 1252 编码写入 2 个文件。
比较这两个文件时的观察:
问题:我可以在不实际写入文件的情况下计算出UTF8文件中的哪个字符将由1252文件中的哪个字符表示吗?
或者换句话说:是否有比这更有效的代码来找出差异而不写入文本文件?
File.WriteAllText("tmp-utf8.txt", text, Encoding.UTF8);
File.WriteAllText("tmp-cp1252.txt", text, Encoding.GetEncoding(1252));
string textUtf8 = File.ReadAllText("tmp-utf8.txt", Encoding.UTF8);
string text1252 = File.ReadAllText("tmp-cp1252.txt", Encoding.GetEncoding(1252));
if (textUtf8 != text1252)
{
... do something
}
您可以使用
Encoding.GetBytes
获取准确的字节表示,并使用 SequenceEqual
进行比较。
var bytesUtf8 = Encoding.UTF8.GetBytes(text);
var bytes1252 = Encoding.GetEncoding(1252).GetBytes(text);
if (!bytesUtf8.AsSpan().SequenceEqual(bytes1252))
{
// do something
}