你如何在Metro中读取UTF8阿拉伯语文本文件?

时间:2012-07-30 02:52:09

标签: c# c#-4.0 file-io utf-8 microsoft-metro

我正在使用以下代码来读取文本文件的内容。该文件以某种Utf8格式编码:

String File = "ms-appx:///Arabic/file.txt";
contents = await Windows.Storage.PathIO.ReadTextAsync(File, Windows.Storage.Streams.UnicodeEncoding.Utf8); 

但上面给出了错误:

WinRT information: No mapping for the Unicode character exists in the target multi-byte code page.

我在这里做错了什么想法?

由于

2 个答案:

答案 0 :(得分:1)

尝试使用Windows.Storage.Streams.DataReader

StorageFolder folder = 
                      Windows.ApplicationModel.Package.Current.InstalledLocation;

StorageFile file = await folder.GetFileAsync("ms-appx:///Arabic/file.txt");

var stream = (await file.OpenAsync(FileAccessMode.Read));

Windows.Storage.Streams.DataReader mreader = 
              new Windows.Storage.Streams.DataReader(stream.GetInputStreamAt(0));

byte[] dgram = new byte[file.Size];

await mreader.LoadAsync((uint)dgram.Length);

mreader.ReadBytes(dgram);

希望它有所帮助。

答案 1 :(得分:1)

我让a similar issue尝试在使用“西欧(Windows) - 代码页1252”编码的文件中读取包含某些字符(',°, - )的文本文件。

我的解决方案是强制Visual Studio使用UTF-8编码保存文件。

  1. 在Visual Studio中打开文件
  2. 文件>高级保存选项...>
  3. 将编码更改为“Unicode(带签名的UTF-8) - 代码页65001”
  4. 保存文件