Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C metro目标多字节代码页中不存在Unicode字符的映射_C#_Unicode_Windows Store Apps - Fatal编程技术网

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

C# C metro目标多字节代码页中不存在Unicode字符的映射,c#,unicode,windows-store-apps,C#,Unicode,Windows Store Apps,行: IList text=await FileIO.ReadLinesAsyncfile 导致异常目标多字节代码页中不存在Unicode字符的映射 当我从文件中删除像ąśźćż这样的字符时,它运行正常,但问题是我不能保证这些字符将来不会发生 我尝试在“高级保存选项”中更改编码,但已经失败 带签名的Unicode UTF-8-代码页65001 我很难弄明白这一点。让FileIO.ReadLinesAsync使用匹配的编码。我不知道自定义类做了什么,但根据错误消息,它没有使用任何Unicode编码

行:

IList text=await FileIO.ReadLinesAsyncfile

导致异常目标多字节代码页中不存在Unicode字符的映射

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

我尝试在“高级保存选项”中更改编码,但已经失败

带签名的Unicode UTF-8-代码页65001

我很难弄明白这一点。

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

我认为这些字符是UTF-16编码的。因此,最好使用UTF-16。使用重载READLINESASSYNCOStorageFile、UNICODEENCODE并将UNICODEENCODE参数设置为UNICODEENCODE.Utf16BE

从MSDN:

此方法使用指定文件的字符编码。如果你 要指定不同的编码,请调用ReadLinesAsyncStorageFile, 改为单链编码


请提供小样本文件内联像10-20字节的十六进制显示问题。否则不可能提出任何建议。你是说这个吗?有点。内联,就像编辑文章并将数据作为文本放置一样。您的示例文件没有BOM表,尽管您声称已使用带签名的Utf8保存了它,但它可能使用其他编码,可能不是Utf8。若要修复此问题,请在读取文件时显式指定编码,或将文件重新保存为带BOM的Utf8。我已指定,我希望显式使用Utf8编码,但它不会改变任何事情。虽然你们是对的,当我将文件保存为UTF8时,它可以正常工作,但我不能这样做,因为我无法控制将给程序什么。让我感兴趣的是,当我将普通文件与控制台应用程序一起使用时,它就像一个符咒一样工作,但对于FileIO和store应用程序,它失败了。我的类只不过是从文件中读取并将其行保存到列表中。我确实尝试过强制UTF-8编码,但没有用。以下是我需要查看FileIO.ReadLinesAsync的全部内容。我看不出您指定了编码。试试这个重载:如果我们可以信任你的文本编辑器,请使用正确的编码,即UTF-8。我想看看。你永远不知道你会发现什么。将UTF-8与BOM标题一起使用。我不知道如何用WinRT做到这一点,但这肯定是可能的。;下一个测试:确保使用UTF8和UTF16会产生不同的字符串,以确保编码正确。这有点让人困惑,我讨厌编码问题。我在StackOverFlow上看过。我希望那里提出的解决办法能解决这个问题