当前位置:  开发笔记 > 编程语言 > 正文

C#:循环编码

如何解决《C#:循环编码》经验,为你挑选了1个好方法。

我正在阅读各种格式和语言的文件,我目前正在使用一个小编码库来尝试检测正确的编码(http://www.codeproject.com/KB/recipes/DetectEncoding.aspx).

这很不错,但偶尔也会错过.(多语言文件)

我的大多数潜在用户对编码的理解很少(我希望最好的是"它与字符有关")并且不太可能在列表中选择正确的编码,所以我想让他们循环通过不同的编码,直到找到正确的编码只需点击一个按钮.

显示问题?点击这里尝试不同的编码!(那就是这个概念)

实现类似的东西最好的方法是什么?


编辑:看起来我没有表达得足够清楚.通过"循环编码",我不是指"如何循环编码?"

我的意思是"如何让用户按顺序尝试不同的编码而不重新加载文件?"

这个想法更像是这样的:假设文件加载了错误的编码.显示一些奇怪的字符.用户将单击"下一编码"或"先前编码"按钮,并且将以不同的编码转换该字符串.用户只需要一直点击,直到找到正确的编码.(无论哪种编码看起来对用户有用都会很好).只要用户可以点击"下一步",他就有合理的机会解决他的问题.

我到目前为止所发现的涉及使用当前编码将字符串转换为字节,然后将字节转换为下一个编码,将这些字节转换为字符,然后将字符串转换为字符串......可行,但我想知道是否存在这是一种更简单的方法.

例如,如果有一个方法可以读取字符串并使用不同的编码返回它,例如"render(string,encoding)".


非常感谢您的回答!



1> Michael Pien..:

将文件作为字节读取,然后使用Encoding.GetString方法.

        byte[] data = System.IO.File.ReadAllBytes(path);

        Console.WriteLine(Encoding.UTF8.GetString(data));
        Console.WriteLine(Encoding.UTF7.GetString(data));
        Console.WriteLine(Encoding.ASCII.GetString(data));

所以你必须只加载一次文件.您可以根据文件的原始字节使用每个编码.用户可以选择正确的一个,你可以使用Encoding.GetEncoding(...).GetString(data)的结果进行进一步处理.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有