C#metro目标多字节代码页中不存在Unicode字符的映射

时间:2014-06-14 22:09:47

标签: c# unicode windows-store-apps

行:

IList<string> text = await FileIO.ReadLinesAsync(file);

导致异常No mapping for the Unicode character exists in the target multi-byte code page

当我从我的文件中删除ąśźćóż之类的字符时,它运行正常,但问题是我不能保证这些字符将来不会发生。

我尝试更改高级保存选项中的编码,但它已经是

Unicode (UTF-8 with signature) - Codepage 65001

我很难想出这个。

2 个答案:

答案 0 :(得分:0)

FileIO.ReadLinesAsync使用匹配的编码。我不知道你的自定义类会做什么,但根据错误消息它不使用任何Unicode编码。

答案 1 :(得分:0)

我认为那些字符ąśźćóż是UTF-16编码的。所以,最好使用UTF-16。使用重载ReadLinesAsync(IStorageFile, UnicodeEncoding)并将UnicodeEncdoing参数设置为UnicodeEncoding.Utf16BE

来自MSDN:

  

此方法使用指定文件的字符编码。如果你   想要指定不同的编码,调用ReadLinesAsync(IStorageFile,   相反,UnicodeEncoding)。