首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法强制ANSI编码(windows-1252)

无法强制ANSI编码(windows-1252)
EN

Stack Overflow用户
提问于 2020-03-03 10:01:35
回答 2查看 1.4K关注 0票数 0

我正在尝试将两个文本文件保存在ANSI编码中,以供遗留系统稍后处理。但是,当我用正确的编码保存它时,它仍然保存为一个UTF-8文件.

我试过以下几种方法:

代码语言:javascript
复制
File.WriteAllLines(filePath, lines, Encoding.GetEncoding(1252));
File.WriteAllLines(filePath, lines, Encoding.GetEncoding("windows-1252"));
代码语言:javascript
复制
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.GetEncoding(1252)))
{
    foreach (string line in lines)
    {
        writer.WriteLine(line);
    }
}

我还尝试将现有的utf-8文件转换为ansi。

代码语言:javascript
复制
File.WriteAllBytes(fileName, Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(1252), File.ReadAllBytes(fileName)));

上述解决方案都没有奏效,它们仍然是UTF-8。我成功地将其保存为ANSI的唯一方法是插入瑞典字符,例如,这是一个我不能用于其中一个文件的黑客。

我不知所措。有人找到解决这个问题的办法了吗?

我们使用的是.NET框架4.5,C# 7.3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-03 10:31:34

我做了一次彻底的调查,发现它起作用了,只是不像我想象的那样。正如@jdweng所说:数据中没有任何内容包含编码,您只是在保存字节。在大多数情况下,您保存的是常规的ASCII字符,因此当您打开Notepad++读取它时,它将默认为它喜欢的任何编码,除非您有一个特殊字符提示要使用的编码程序。

I encoded a file in four encodings (default (UTF-8), ANSI, ASCII and UTF-8-BOM) and opened up all files in a hex editor发现,在大多数情况下,这些文件中的ä决定了在Notepad++中使用哪个解码器。

因此,如果遗留系统使用ANSI解码器,则应该能够打开"ANSI“编码文件,而不需要特殊字符。尽管如此,它还是以UTF-8的形式出现在Notepad++上。

票数 1
EN

Stack Overflow用户

发布于 2020-03-03 10:23:06

这肯定管用。尝试以下程序:

代码语言:javascript
复制
using System.IO;
using System.Text;

namespace Demo
{
    static class Program
    {
        static void Main()
        {
            string filePath = @"E:\tmp\test"; // Put your path here.

            string[] lines = { "ÿ" };

            File.WriteAllLines(filePath + ".1.bin", lines, Encoding.GetEncoding(1252));
            File.WriteAllLines(filePath + ".2.bin", lines);
        }
    }
}

运行程序,然后检查二进制编辑器中文件的内容。

你将看到以下情况:

代码语言:javascript
复制
test.1.bin contains: FF 0D 0A
test.2.bin contains: 0C BF 0D 0A

(注意:如果将".bin“文件拖放到中,它将以二进制模式打开它。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60504655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档