C# FileIO.WriteTextAsync(文件,文本)使用什么编码?

C# FileIO.WriteTextAsync(文件,文本)使用什么编码?,c#,windows-8,windows-runtime,msdn,C#,Windows 8,Windows Runtime,Msdn,Windows.Storage.FileIo.WriteTextAsync方法有两个重载,有文本编码和没有文本编码 但是,该方法的属性(主页面或重载页面)没有指定不带编码参数的方法使用的编码 那么默认情况下使用什么编码呢 另外一个问题:像这样的东西可能在某处有记录。那么如何从MSDN中找到相关信息呢?它是按照我看不到的某种模式组织的吗?看看带有编码参数的重载方法: 评论 此方法尝试自动检测数据的编码 基于字节顺序标记的存在的文件。如果编码不能 如果检测到,则使用调用方指定的编码 这就是第一种方法

Windows.Storage.FileIo.WriteTextAsync
方法有两个重载,有文本编码和没有文本编码

但是,该方法的属性(主页面或重载页面)没有指定不带编码参数的方法使用的编码

那么默认情况下使用什么编码呢


另外一个问题:像这样的东西可能在某处有记录。那么如何从MSDN中找到相关信息呢?它是按照我看不到的某种模式组织的吗?

看看带有编码参数的重载方法:

评论

此方法尝试自动检测数据的编码 基于字节顺序标记的存在的文件。如果编码不能 如果检测到,则使用调用方指定的编码

这就是第一种方法的工作原理,没有最后一句话:

此方法尝试自动检测数据的编码 基于字节顺序标记的存在的文件


如果无法检测到编码,则使用。

它在何处表示
编码。将使用默认值
<代码>编码。默认值
是一个ANSI字符集——我真的怀疑它在WRT程序中默认使用这个字符集!而且,这似乎有点奇怪。。。这是在写一个文件。若文件存在,那个么我猜可以先读取它以确定现有的BOM,然后使用相同的编码覆盖,但这似乎有点复杂。我认为页面中的文字是一个文档错误,当我阅读它时,实际上…你会假设什么,Matthew?@伙计,我不想“假设”。另外,我正在创建这个文件,然后我将继续覆盖它,这个文档暗示,如果它是可检测的,我不能更改编码,除非我先删除旧文件。API真的是这样吗?@hyde我认为MSDN文档可能不准确!这肯定不是第一次了。你可能需要根据经验来确定这一点。。。我猜默认值将是UTF8或UTF16(但可能是UTF8)。哪个程序集是@OndrejJanacek中的
FileIO
类?它是WinRT,所以它不在普通程序集中。@OndrejJanacek在问题文本中添加了完整的名称空间。除了它是Windows 8和Windows运行时API的一部分之外,不知道它在什么程序集中。它没有文档记录。我很确定这是故意的,WinRT积极地解决了文本编码的噩梦。是时候了。您所拥有的保证是,您始终可以使用WinRT程序可靠地读回它。如果您确实关心编码,因为非WinRT程序将读取文件,那么请使用重载来传递Unicode编码。@HansPassant Ok。假设没有更好的答案出现(或存在),那么我会接受,如果你把它作为一个答案来写的话。