2012-07-30 60 views
1

我正在使用下面的代碼來讀取文本文件的內容。該文件編碼某種UTF8格式:你如何閱讀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. 

任何想法,我做錯了什麼嗎?

感謝

回答

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

我有a similar issue試圖讀取使用「西歐(Windows) - Codepage 1252」編碼的文件中包含某些字符(',°, - )的文本文件。

在我的情況下,解決方案是強制Visual Studio使用UTF-8編碼保存文件。

  1. 打開在Visual Studio
  2. 文件>高級保存選項...>
  3. 更改編碼爲 「的Unicode(UTF-8具有簽名) - 代碼頁65001」 的文件
  4. 保存文件