【发布时间】:2009-03-19 10:43:06
【问题描述】:
我正在阅读各种格式和语言的文件,我目前正在使用一个小型编码库来尝试检测正确的编码 (http://www.codeproject.com/KB/recipes/DetectEncoding.aspx)。
还不错,只是偶尔还是会错过。 (多语言文件)
我的大多数潜在用户对编码知之甚少(我最希望的是“它与字符有关”)并且不太可能能够在列表中选择正确的编码,所以我想让他们循环使用不同的编码,直到通过单击按钮找到正确的编码。
显示问题?单击此处尝试不同的编码! (反正就是这个概念)
实现类似的最佳方式是什么?
编辑:看来我表达得不够清楚。通过“循环编码”,我不是指“如何循环编码?”
我的意思是“如何让用户在不重新加载文件的情况下依次尝试不同的编码?”
这个想法更像是这样:假设文件以错误的编码加载。显示一些奇怪的字符。用户将单击“下一个编码”或“上一个编码”按钮,字符串将被转换为不同的编码。用户只需要继续点击,直到找到正确的编码。 (任何对用户来说看起来不错的编码都可以)。只要用户可以点击“下一步”,他就有合理的机会解决他的问题。
到目前为止,我发现涉及使用当前编码将字符串转换为字节,然后将字节转换为下一个编码,将这些字节转换为字符,然后将字符转换为字符串...可行,但我想知道如果没有更简单的方法可以做到这一点。
例如,如果有一个方法可以读取字符串并使用不同的编码返回它,例如“render(string, encoding)”。
非常感谢您的回答!
【问题讨论】:
-
从技术上讲,UTF-8 编码文件不需要 BOM。甚至不鼓励这样做,因为它会干扰期望 ASCII 数据以某些字符开头的应用程序,例如“#!”在 Unix shell 脚本的开头。
标签: c# utf-8 character-encoding