我有一个ANSI编码的文本文件,不应该像重音一样编码为ANSI ANSI不支持的字符。我宁愿使用UTF-8。

数据可以正确解码还是在转码中丢失?

我可以使用哪些工具?

以下是我的例子:

ç é

我可以从上下文(café应该是café)中知道这些应该是这两个字符:

ç é
有帮助吗?

解决方案

编辑:在进入更复杂的解决方案之前消除一种简单的可能性:您是否尝试在正在读取文件的文本编辑器中将字符集设置为utf8?这可能只是某人向你发送一个utf8文件的情况,你正在编辑器中读到cp1252。

仅举两个例子,这是通过单字节编码镜头读取utf8的情况,可能是iso-8859-1,iso-8859-15或cp1252之一。如果您可以发布其他问题字符的示例,则应该可以将其缩小范围。

由于对角色的视觉检查可能会产生误导,因此您还需要查看基础字节:§你在屏幕上看到的可能是0xa7或0xc2a7,这将决定你必须要进行的字符集转换。

你能否假设你的所有数据都以完全相同的方式扭曲 - 它来自同一个源并经历了相同的转换序列,因此例如没有一个é在你的文字中,它总是ç?如果是这样,可以通过一系列字符集转换来解决问题。如果您可以更加具体地了解您所处的环境以及您正在使用的数据库,那么此处的某些人可能会告诉您如何执行适当的转换。

否则,如果问题字符仅发生在数据中的某些位置,则必须根据“没有作者打算放置Ã&#”这样的假设,逐个实例化它。 167;在他们的文本中,所以每当你看到它时,用ç"替换。后一种选择风险更大,首先是因为那些关于作者意图的假设可能是错误的,其次是因为你必须自己发现每一个问题,如果有太多的文字要用于视觉检查,或者如果它是书面的,这可能是不可能的。在一种对你不熟悉的语言或书写系统中。

其他提示

使用Notepad ++

执行以下步骤

1-复制原始文本

2-在Notepad ++中,打开新文件,更改编码 - >选择您认为原始文本如下的编码。也可以尝试编码“ANSI”。因为有时Unicode文件被某些程序读作ANSI

3-粘贴

4-然后通过在同一菜单上再次转换为Unicode:编码 - > “以UTF-8编码” (不是“转换为UTF-8”)并希望它会变得可读

以上步骤适用于大多数语言。您只需要在粘贴notepad ++之前猜测原始编码,然后通过相同的菜单转换为基于Unicode的备用编码,以查看事物是否可读。

大多数语言以2种编码形式存在:1-大多数计算机最初使用旧的传统ANSI(ASCII)格式,仅为8位。 8位仅允许256种可能性,128种常规拉丁和控制字符,最终128位根据PC语言设置读取不同2-新的Unicode标准(最多32位)为每个字符提供唯一代码在所有目前已知的语言和更多的未来。如果文件是unicode,应该在安装了语言字体的任何PC上理解。请注意,即使UTF-8最高可达32位,也与UTF-16和UTF-32一样宽,只是为了节省磁盘空间而只尝试使用拉丁字符保留8位

当你看到像ç和é,它通常表示一个程序打开了一个UTF-8文件,该程序以ANSI(或类似形式)读取它。 Unicode字符,例如:

U + 00C2拉丁语大写字母A与抑扬符号
U + 00C3拉丁语大写字母A与代字号
U + 0082允许在这里休息
U + 0083这里没有休息

由于UTF-8使用的可变字节策略,

倾向于出现在ANSI文本中。这个策略很好地解释了这里

您的优势在于,这些奇怪字符的外观使得查找错误转换的实例变得相对容易,从而取代了它。

我相信,由于ANSI每个字符总是使用1个字节,因此您可以通过简单的搜索和替换操作来处理这种情况。或者更方便的是,程序包含违规序列和所需字符之间的表格映射,如下所示:

“ - > “ #应该是一个开头双卷曲引用
â&#8364 ;? - > ” #应该是一个收尾双曲引语

任何给定的文本,假设它是英文的,将会有相对较少的不同类型的替换。

希望有所帮助。

使用命令行中的vim:

vim -c "set encoding=utf8" -c "set fileencoding=utf8" -c "wq" filename

在崇高的文本编辑器中,文件 - >重新打开编码 - >选择正确的编码。

通常,编码是自动检测的,但如果没有,则可以使用上述方法。

如果您在文件中看到问号或者重音已经丢失,那么返回utf8将无助于您的原因。例如如果咖啡馆é变成咖啡馆 - 改变编码本身无济于事(你需要原始数据)。

你可以在这里粘贴一些文字,这有助于我们回答。

然后有一些较旧的重新编码计划。

有些程序试图检测文件的编码,例如 chardet 。然后你可以使用iconv将它转换为不同的编码。但这要求原始文本仍然完好无损,并且不会丢失任何信息(例如删除重音符号或整个重音字母)。

我找到了一种自动检测文件编码的简单方法 - 将文件更改为文本文件(在mac上将文件扩展名重命名为.txt)并将其拖到Mozilla Firefox窗口(或文件 - >打开) 。 Firefox将检测编码 - 您可以在View - >下看到它的结果。字符编码。

一旦我知道正确的编码,我就使用TextMate更改了文件的编码。文件 - >重新打开使用编码并选择您的编码。然后文件 - >另存为并将编码更改为UTF-8并将行结尾更改为LF(或任何您想要的)

在OS X上 Synalyze It!可让您以不同的编码显示文件的各个部分(所有这些都由ICU图书馆)。一旦你知道源编码是什么,你可以通过剪贴板复制整个文件(字节)并插入到一个新的文件中,在那里选择目标编码(UTF-8或任何你喜欢的)。

使用UTF-8或其他Unicode表示时非常有用 UnicodeChecker

我在搜索有中文字符的代码页问题的解决方案时发现了这个问题,但最后我的问题只是Windows无法在UI中正确显示它们的问题。

如果其他人有同样的问题,您可以通过将Windows中的本地更改为中国然后再返回来修复它。

我在这里找到了解决方案:

http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/how-can-i-get-chinesejapanese-characters- ?到/ fdb1f1da-b868-40d1-a4a4-7acadff4aafa页= 2及AUTH = 1

同样支持Gabriel的答案,因为查看记事本++中的数据是让我知道窗户的原因。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top