相关疑难解决方法(0)

如何检测文本文件的编码/代码页

在我们的应用中,我们收到的文本文件(.txt,.csv从不同的来源,等等).在阅读时,这些文件有时会包含垃圾,因为文件是在不同的/未知的代码页中创建的.

有没有办法(自动)检测文本文件的代码页?

detectEncodingFromByteOrderMarks,对StreamReader构造,工程UTF8 和其他的Unicode标文件,但是我正在寻找一种方法来检测代码页,像ibm850,windows1252.


谢谢你的回答,这就是我所做的.

我们收到的文件来自最终用户,他们没有关于代码页的线索.接收者也是最终用户,到目前为止,这是他们对代码页的了解:代码页存在,并且令人讨厌.

解:

  • 在记事本中打开收到的文件,查看一段乱码文本.如果有人被称为弗朗索瓦(François)或其他东西,那么凭借你的人类智慧你可以猜到这一点
  • 我创建了一个小应用程序,用户可以使用该应用程序打开文件,并在使用正确的代码页时输入用户知道它将出现在文件中的文本.
  • 遍历所有代码页,并显示提供用户提供的文本解决方案的代码页.
  • 如果弹出一个代码页,请让用户指定更多文本.

.net c# globalization encoding text

292
推荐指数
8
解决办法
29万
查看次数

在C#中确定字符串的编码

有没有办法在C#中确定字符串的编码?

说,我有一个文件名字符串,但我不知道它是用Unicode UTF-16编码还是系统默认编码,我怎么知道呢?

c# string encoding

119
推荐指数
7
解决办法
17万
查看次数

查找任何文件编码的有效方法

是的是一个最常见的问题,这个问题对我来说很模糊,因为我对此并不了解.

但我想要一种非常精确的方法来查找文件编码.像Notepad ++一样精确.

c# encoding

93
推荐指数
7
解决办法
12万
查看次数

如何在c#中确定文件是二进制还是文本?

我需要在80%确定文件是二进制文件还是文本文件,有没有办法在c#中快速,脏/丑?

c# binary file-io text

52
推荐指数
7
解决办法
4万
查看次数

在Windows中识别unicode编码文本文件的最佳方法是什么?

我正在开发一个代码库,由于多个团队成员使用不同的编辑器(以及默认设置)进行开发,因此散布了一些unicode编码文件.我想通过查找所有unicode编码文件并将它们转换回ANSI编码来清理我们的代码库.

任何关于如何完成这项任务的"发现"部分的想法都将得到真正的体会.

windows unicode search

13
推荐指数
2
解决办法
2万
查看次数

C# - 检测文件中的编码,使用找到的编码将更改写入文件

我编写了一个小程序,用于迭代大量文件,并在找到某个字符串匹配时应用一些更改,我遇到的问题是不同的文件有不同的编码.所以我想做的是检查编码,然后用原始编码覆盖文件.

在C#.net 2.0中最漂亮的方式是什么?

我的代码现在看起来非常简单;

String f1 = File.ReadAllText(fileList[i]).ToLower();

if (f1.Contains(oPath))
{
    f1 = f1.Replace(oPath, nPath);
    File.WriteAllText(fileList[i], f1, Encoding.Unicode);
}
Run Code Online (Sandbox Code Playgroud)

我看了一下C#中的自动编码检测,这让我意识到我如何检测编码,但我不知道如何使用该信息以相同的编码进行编写.

非常感谢这里的任何帮助.

.net c# encoding .net-2.0

10
推荐指数
1
解决办法
1万
查看次数

检测字节数组C#的编码

有没有办法在C#中确定字节数组的编码?

我有任何字符串,如 "LoremipsumáéíóúñÑç",我使用几种编码得到字节数组.

我想在字节数组中检测编码的唯一方法,我再次得到字符串值.

其他问题,也许,我会在数据库中有一个存储BLOB的列(如字节数组).以前转换为UTF-8字节数组的字符串.也许另一个应用程序使用Unicode编码将字符串转换为字节数组.

在数据库列中,有几个编码的字节数组.检测字节数组的编码非常有用.我需要一种方法来查找字节数组的编码.

测试:

string DataXmlForSupport = "<support><machinename></machinename><comments>Este es el log 1 áéíóú</comments></support>";
        string DataXmlForSupport2 = "Lorem ipsum áéíóú ñÑç";

        [TestMethod]
        public void Encoding_byte_array_string()
        {
            var uencoding = new System.Text.UnicodeEncoding();
            byte[] data = uencoding.GetBytes(DataXmlForSupport);

            var dataXml = Encoding.Unicode.GetString(data);
            Assert.AreEqual(DataXmlForSupport, dataXml, "Se esperaba resultados Unicode");

            dataXml = Encoding.UTF8.GetString(data);
            Assert.AreNotEqual(DataXmlForSupport, dataXml, "NO Se esperaba resultados UTF8");

            var utf8 = new System.Text.UTF8Encoding();
            data = utf8.GetBytes(DataXmlForSupport2);

            dataXml = Encoding.UTF8.GetString(data);
            Assert.AreEqual(DataXmlForSupport2, dataXml, "Se esperaba resultados UTF8");

            dataXml = Encoding.Unicode.GetString(data);
            Assert.AreNotEqual(DataXmlForSupport2, dataXml, …
Run Code Online (Sandbox Code Playgroud)

c# arrays encoding utf-8 detect

7
推荐指数
1
解决办法
2万
查看次数

检测UTF-8编码(MS IDE是如何做到的)?

各种字符编码的问题在于包含文件并不总是清楚地标记.使用"字节顺序标记"或BOM标记一些不一致的约定.但实质上,你必须被告知文件编码是什么,准确地读取它.

我们构建了读取源文件的编程工具,这让我们感到悲伤.我们有办法指定默认值,并嗅探BOM等.我们在常规和默认值方面做得很好.但是我们(我假设其他所有人)被挂起的地方是没有BOM标记的UTF-8文件.

最近的MS IDE(例如,VS Studio 2010)显然会"嗅探"文件以确定它是否是没有BOM的UTF-8编码.(从事工具业务,我们希望与MS兼容,因为他们的市场份额,即使这意味着必须与他们一起超越"愚蠢"的悬崖.)我特别感兴趣的是他们用作什么启发式(虽然启发式的讨论很好)?怎么会"正确"?(考虑以这种方式解释的ISO8859-x编码字符串).

编辑:关于检测字符编码/集的这篇论文非常有趣:http: //www-archive.mozilla.org/projects/intl/UniversalCharsetDetection.html

编辑2012年12月:我们结束扫描整个文件,看它是否包含任何违反UTF-8序列的行为......如果没有,我们称之为UTF-8.这个解决方案的不好的部分是你必须处理两次字符,如果它是UTF-8.(如果它不是UTF-8,这个测试可能会相当快地确定,除非文件发生在所有7位ASCII上,此时读取像UTF-8一样不会受到伤害).

ide utf-8 character-encoding

6
推荐指数
1
解决办法
1526
查看次数

与编码无关的方式来读取“德语”文本文件

我们所有基于文本的文件均采用 UTF-8 或 latin-1 (Windows) 编码。我们使用的唯一“特殊字符”是德语变音符号 \xc3\xa4、\xc3\xb6、\xc3\xbc 和 \xc3\x9f。

\n\n

由于不同的原因(包括历史原因,也包括“属性文件不能是UTF-8”的老问题),我们无法完全统一我们的编码。

\n\n

当人们用 Java 读取文本文件并使用错误的编码时,这显然会导致错误。

\n\n

如果您知道唯一可能的特殊字符是上面指出的字符,是否有一种简单、可靠的方法来检测文件是 UTF-8 还是 latin-1。

\n\n

或者我是否需要将文件读取为字节数组并搜索特殊字节?

\n

java encoding utf-8 iso-8859-1

5
推荐指数
1
解决办法
2010
查看次数

zip文件中的文件编码(C#/ ionic-zip)

我们在zip文件中编码文件时出现问题.我们使用离子拉链来压缩和解压缩档案.我们位于丹麦,所以我们经常在文件名中包含æ,ø或å的文件.

当用户使用Windows内置工具压缩文件时,我发现它正在使用IBM437 enconding,当我们在其中包含'ø'/'Ø'的文件时,这只是给出了一些时髦的结果.我修复了以下代码:

public static string IBM437Encode(this string text)
{
    return text.Replace('ø', '¢').Replace('Ø', '¥');
}
public static string IBM437Decode(this string text)
{
    return text.Replace('¢', 'ø').Replace('¥', 'Ø');
}
Run Code Online (Sandbox Code Playgroud)

这已经运行了一段时间了,一切都很好.

但是,因为它总是一个但是,我们没有尝试用mac osx中的默认工具压缩的文件.所以现在我们遇到了一个新问题..当使用æ,ø和å时,编码是UTF-8! 所以如果我知道压缩拉链的位置,我可以让它工作,但是有没有简单的方法来检测或规范化拉链内的编码?

c# zip encoding ionic-zip

5
推荐指数
1
解决办法
814
查看次数

在C#中将ANSI(Windows 1252)转换为UTF8

之前我已经在Stack Overflow上以循环方式询问了这个问题,并希望这次能够做到正确.如何将ANSI(代码页1252)转换为UTF-8,同时保留特殊字符?(我知道UTF-8支持比ANSI更大的字符集,但是如果我可以保留ANSI支持的所有UTF-8字符并用其他?东西替换其余的字符集就可以了)

为什么我要转换ANSI→UTF-8

我基本上编写的程序将vCard文件(VCF)拆分为单个文件,每个文件包含一个联系人.我注意到诺基亚和索尼爱立信手机以UTF-8(无BOM)保存备份VCF文件,但Android将其保存为ANSI(1252).上帝知道其他手机以什么格式保存它们!

所以我的问题是

  1. vCard文件的字符编码是否有行业标准?
  2. 哪个更容易解决我的问题?将ANSI转换为UTF8(和/或反过来)或尝试检测输入文件具有哪种编码并通知用户有关它?

tl; dr 需要知道如何将字符编码从(ANSI/UTF8)转换为(UTF8/ANSI),同时保留所有特殊字符.

.net c# string character-encoding special-characters

4
推荐指数
4
解决办法
4万
查看次数

如何使用streamreader使用当前编码读取byte []

我想byte[]用C#读取文件的当前编码.

正如在MSDN中编写的那样,当构造函数没有编码时,默认编码将是UTF-8:

var reader = new StreamReader(new MemoryStream(data)).
Run Code Online (Sandbox Code Playgroud)

我也试过这个,但仍然把文件作为UTF-8:

var reader = new StreamReader(new MemoryStream(data),true)
Run Code Online (Sandbox Code Playgroud)

我需要byte[]用当前编码来阅读.

.net c# encoding stream streamreader

2
推荐指数
1
解决办法
2万
查看次数