我需要在我的Windows商店应用项目(c#)中实际将某些文本文件的编码从 UTF-8 更改为 ASCII 。在WinRT / Win8.1上,我们可以通过手动打开记事本然后选择“另存为”菜单来完成此操作,但我的问题是如何在代码中执行此操作(c#)?
[编辑]
在WinRT中,我们可以使用 FileIO.WriteLinesAsync()或 FileIO.WriteTextAsync()将字符串保存到文本文件,但我们只能指定 UnicodeEncoding 作为编码。因此,与完全成熟的.NET SDK相比,SDK完全不同。
[编辑] 我知道ASCII是UTF-8的一个子集,但我确实需要确保文件编码是ASCII,因为我想将文件上传到网站,它只接受ASCII编码的txt文件(UTF-8 / Unicode编码)会导致它抱怨文件格式错误!);
[编辑]
问题解决了:
public async void SaveStringToAnsiFile()
{
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteBytesAsync(file, Encoding.GetEncoding("gb2312").GetBytes("abcd→1234"));
}
答案 0 :(得分:1)
由于不直接支持ASCII,因此您需要将文本转换为字节数组并使用WriteBytesAsync
(reference)之类的内容。这是一个简单的技术。当然,非ascii字符不起作用(但这不是你需要的)。
string str = "these are characters";
byte[] bytes = new byte[str.Length];
for (var i = 0; i < str.Length; i++)
{
bytes[i] = Convert.ToByte(str[i]);
}
// create the file here ... then ...
await Windows.Storage.FileIO.WriteBytesAsync(file, bytes);