c# - 创建 UTF8 文本文件而不是 ANSI

标签 c# visual-studio-2012 .net-4.5

我有这段代码可以异步写入文件:

    private static async Task WriteTextAsync(string filePath, string text)
    { //Writes to our output files
        byte[] encodedText = Encoding.UTF8.GetBytes(text);
        using (FileStream sourceStream = new FileStream(filePath,
            FileMode.Create, FileAccess.Write, FileShare.None,
            bufferSize: 4096, useAsync: true))
        {
            await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
        };
    }

尽管设置了 Encoding.UTF8,创建的文本文件仍然是 ANSI 格式。 FileStream 类有 15 个重载构造函数,如果不是在编码文本上,我根本不知道应该在哪里设置它。

我可以看出该文件是 ANSI,因为当我在 TextPad 中打开它并查看文件统计信息时,它会将 ANSI 列为代码集:

enter image description here

有问题,因为MySQL LOAD INFILE 没有正确读取文件,看了答案后我认为它与BOM有关,但不确定。

我试过这个(对于 BOM):

        byte[] encodedText = new byte[] { 0xEF, 0xBB, 0xBF }.Concat(Encoding.UTF8.GetBytes(text)).ToArray();
        using (FileStream sourceStream = new FileStream(filePath,
            FileMode.Create, FileAccess.Write, FileShare.None,
            bufferSize: 4096, useAsync: true))
        {
            await sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
        };

Textpad 然后将其视为 UTF8,MySQL LOAD INFILE 仍然失败。重新保存在 Textpad 中,MySQL 正确地看到了它。

将代码更改为:

        using (TextWriter writer = File.CreateText(filePath))
        {
            await writer.WriteAsync(text);
        }

这似乎对两者都有效。我不确定 MySQL LOAD INFILE 与此有关的问题是什么。

最佳答案

不对,肯定是UTF-8:

byte[] encodedText = Encoding.UTF8.GetBytes(text);

只能给你UTF-8;然后将 encodedText 写入流。

但是!对于 0-127 范围内的任何字符,UTF-8 看起来与 ASCII/ANSI 相同。它只是在上面看起来不同。误报?

关于c# - 创建 UTF8 文本文件而不是 ANSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032988/

相关文章:

c# - Linq 的 Enumerable.Count 方法检查 ICollection<> 但不检查 IReadOnlyCollection<>

C# 和 .NET 文件夹 ID

c++ - 在没有VS11 Beta的电脑上运行用VS11 Beta开发的App

c# - 在 Visual Studio 文本编辑器中删除垂直空格或新行

c# - GCHandle.FromIntPointer 没有按预期工作

msbuild - 将解决方案升级到 .NET 框架 4.5 后,日常部署停止工作

c# - 转换为嵌套类格式

c# - 使用导入的架构编译 XmlSchemaSet

c# - 如何将 "Forward"cookie 发送到另一个页面

windows-phone-7 - 带有 7.1 引用的 Windows Phone 8 应用程序