【问题标题】:How to detect characters with unknown encoding (like Textmate)?如何检测未知编码的字符(如Textmate)?
【发布时间】:2014-05-02 17:22:57
【问题描述】:
Textmate 不允许打开包含未知编码字符的文件。 For example, when a wrong encoding is selected, the Open button is disabled:
选择正确的编码时,启用打开按钮:
是否有用于报告在当前编码之外编码的字符的 c 或 Objective-C 库?
【问题讨论】:
标签:
objective-c
c
encoding
locale
【解决方案1】:
在您的主目录中创建 .tm_properties 文件,然后将以下代码放入其中:
[ attr.file.unknown-encoding ]
encoding=gbk
当 Textmate 2 不知道文件编码时,这会将默认编码设置为 gbk。
您也可以将此 .tm_properties 文件放在项目根目录中,以便仅在项目中使用此设置。
【解决方案2】:
通常的方法是使用某种默认编码(如 UTF-8/16 或 latin 1)加载文本。如果文本开头有一个BOM,那么这很好地表明该文本是某种形式的Unicode。 BOM 还有助于查找使用的转换格式(UTF-8 等)。
如果加载文本仍然失败,那么是时候向用户询问提示(字符集选择)了,因为很难猜出使用的编码是什么。