如何将保存的文本文件编码转换为UTF8?
How to convert saved text file encoding to UTF8?
最近我在我的电脑上保存了一个文本文件,但是当我再次打开它时,我看到了一些字符串,例如:
"˜ÌÇí ÍÑÝã ÚÌíÈå¿"
现在我想知道是否可以将其重新转换为原始文本 (UTF8)?
我尝试了这个代码,但它不起作用
string tempStr="˜ÌÇí ÍÑÝã ÚÌíÈå¿";
Encoding ANSI = Encoding.GetEncoding(1256);
byte[] ansiBytes = ANSI.GetBytes(tempStr);
byte[] utf8Bytes = Encoding.Convert(ANSI, Encoding.UTF8, ansiBytes);
String utf8String = Encoding.UTF8.GetString(utf8Bytes);
您可以使用类似的东西:
string str = Encoding.GetEncoding(1256).GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(tempStr))
字符串并没有真正解码...它的 byte
s 只是 "enlarged" 到 char
,类似:
byte[] bytes = ...
char[] chars = new char[bytes.Length];
for (int i = 0; i < bytes.Length; i++)
{
chars[i] = bytes[i];
}
string str = new string(chars);
现在...此转换与代码页 ISO-8859-1 完成的转换相同。所以我可以简单地做相反的事情,或者我可以使用该代码页为我做,我选择了第二个。
Encoding.GetEncoding("iso-8859-1").GetBytes(tempStr)
这给了我原来的byte[]
然后我做了一些测试,开始的文本似乎不是UTF8,而是codepage 1256,这是一个阿拉伯语代码页。所以我
string str = Encoding.GetEncoding(1256).GetString(...);
唯一的问题是,˜
似乎不是原始字符串的一部分。
还有一种可能:
string str = Encoding.GetEncoding(1256).GetString(Encoding.GetEncoding(1252).GetBytes(tempStr));
代码页 1252 是在美国和欧洲大部分地区使用的代码页。如果您将 Windows 配置为英语,它很有可能使用 1252 作为默认代码页。结果与使用 iso-8859-1
略有不同
最近我在我的电脑上保存了一个文本文件,但是当我再次打开它时,我看到了一些字符串,例如:
"˜ÌÇí ÍÑÝã ÚÌíÈå¿"
现在我想知道是否可以将其重新转换为原始文本 (UTF8)?
我尝试了这个代码,但它不起作用
string tempStr="˜ÌÇí ÍÑÝã ÚÌíÈå¿";
Encoding ANSI = Encoding.GetEncoding(1256);
byte[] ansiBytes = ANSI.GetBytes(tempStr);
byte[] utf8Bytes = Encoding.Convert(ANSI, Encoding.UTF8, ansiBytes);
String utf8String = Encoding.UTF8.GetString(utf8Bytes);
您可以使用类似的东西:
string str = Encoding.GetEncoding(1256).GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(tempStr))
字符串并没有真正解码...它的 byte
s 只是 "enlarged" 到 char
,类似:
byte[] bytes = ...
char[] chars = new char[bytes.Length];
for (int i = 0; i < bytes.Length; i++)
{
chars[i] = bytes[i];
}
string str = new string(chars);
现在...此转换与代码页 ISO-8859-1 完成的转换相同。所以我可以简单地做相反的事情,或者我可以使用该代码页为我做,我选择了第二个。
Encoding.GetEncoding("iso-8859-1").GetBytes(tempStr)
这给了我原来的byte[]
然后我做了一些测试,开始的文本似乎不是UTF8,而是codepage 1256,这是一个阿拉伯语代码页。所以我
string str = Encoding.GetEncoding(1256).GetString(...);
唯一的问题是,˜
似乎不是原始字符串的一部分。
还有一种可能:
string str = Encoding.GetEncoding(1256).GetString(Encoding.GetEncoding(1252).GetBytes(tempStr));
代码页 1252 是在美国和欧洲大部分地区使用的代码页。如果您将 Windows 配置为英语,它很有可能使用 1252 作为默认代码页。结果与使用 iso-8859-1