4

如果我使用 FileIO.ReadTextAsync、ReadLinesAsync 或 DataReader 读取文本文件,我只能为编码指定 UnicodeEncoding 枚举的成员。由于某种原因,这仅包括 Utf8、Utf16BE 和 Utf16LE。那么如何读取具有另一种编码的文本文件(例如 Windows-1252 甚至常规 Unicode(所有字符都有 2 个字节))?

如果 Windows 应用商店应用程序与桌面应用程序共享文本文件或从 Internet 读取文本文件,这可能很重要。

4

2 回答 2

4

汉斯的评论实际上回答了我的问题。Windows-1252 示例:

string filePath = ...
StorageFile file = await StorageFile.GetFileFromPathAsync(filePath);
IBuffer buffer = await FileIO.ReadBufferAsync(file);
byte[] fileData = buffer.ToArray();
Encoding encoding = Encoding.GetEncoding("Windows-1252");
string text = encoding.GetString(fileData, 0, fileData.Length);
于 2012-10-18T07:27:17.073 回答
0

@JürgenBayerbuffer.ToArray()不适合我。

所以,而不是写:

string text = await FileIO.ReadTextAsync(file);

我写:

IBuffer buffer = await FileIO.ReadBufferAsync(file);
byte[] fileData;
CryptographicBuffer.CopyToByteArray(buffer, out fileData);
Encoding encoding = Encoding.GetEncoding("Windows-1252");
string text = encoding.GetString(fileData, 0, fileData.Length);
于 2013-06-20T09:54:25.343 回答