- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个充满非 ASCII 字符的文本文件。我无法通过 file
检测到编码或 enca
.
file non_ascii.txt
non_ascii.txt: Non-ISO extended-ASCII text
enca non_ascii.txt
Unrecognized encoding
但是我在Windows Notepad++中可以正常打开
编辑:上面的表述会引起误解。非常遗憾。事实上,我从原始文件中挑选了一些部分并将它们放入新的文本文件中,然后在 Notepad++ 中打开。
这两个部分如下所示。它们被 Notepad++ 以两种不同的方式解码。
问题:
<F1><EE><E9><E4><FF>
代表的字符?我无法通过“grep 'сойдя' win.txt”获得结果,即使“сойдя”被编码为 <F1><EE><E9><E4><FF>
? 文件内容切片如下:
less non_ascii.txt
"non_ascii.txt" may be a binary file. See it anyway?
<F1><EE><E9><E4><FF>
<F2><F0><E0><EA><F2><EE><E2><E0><F2><FC><F1><FF>
<D0><F2><E9><E4><D7><E9><E7><E1><EC><E1><F3><F8>
<D1><E5><EA><F3><ED><E4>
<F0><E0><E7><E3><F0><F3><E7><EA><E8>
<EF><EE><E4><F1><F2><E0><E2><EB><FF><F2><FC>
<F0><E0><E7><E3><F0><F3><E7><EA><E5>
<F1><EE><E9><E4><F3>
<F0><E0><E7><E3><F0><F3><E7><EA><E0>
<F1><EE><E2><EB><E0><E4><E0><EB><E8>
<C1><D7><E9><E1><F0><EF><FE><F4><E1>
<CB><C1><D3><D3><C9><D4><C5><D2><C9><D4>
<F1><EE><E2><EB><E0><E4><E0><EB><EE>
<F1><EE><E9><E4><E8>
<F1><EE><E2><EB><E0><E4><E0><EB><E0>
最佳答案
您的问题实际上有两个部分:(1) 我如何识别未知编码以及 (2) 我如何将其转换为有用的东西?
第一部分是真正的挑战,确实无法用普遍的术语来回答——在一般情况下,没有可靠的方法来识别未知的 8 位编码。一些编码会给你很好的提示(UTF-8 是一个很好的例子),在很多情况下,如果你很清楚文本应该代表什么,问题就可以解决。
A mapping of 8-bit character meanings可能会有帮助(咳咳,链接是我的),在这种情况下会快速提示 Windows code page 1251 .感谢十六进制转储和具有您期望的表示的图片!
有了这些,转换就很容易了。
iconv -f cp1251 -t utf-8 non_ascii.txt >utf8.txt
假设您的 Linux 系统设置为在终端使用 UTF-8,您的 grep
命令现在应该可以在 utf-8.txt
上运行。
有些文本是“ANSI”(无论如何这是一个伪造的术语)的迹象可能只是转移注意力——据我所知,你摘录中的所有内容看起来都像是格式正确的 CP1251。
一些 tools like chardet
做一个合理的工作,至少引导你朝着正确的方向前进,尽管你必须明白,就像人类专家一样,他们必须猜测文本应该代表什么。在极端情况下,他们只是没有足够的信息来正确猜测,要么是因为有几个候选编码几乎没有差异(例如,Latin-1 vs Latin-9 vs Windows-1252,所有这些也与前 128 个位置的普通 7 位 US-ASCII)或者因为输入不包含足够的信息来建立任何通用模式。
关于linux - 如何将 "binary text"转换为 "visible text"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558075/
我对以下树的术语感到困惑,我一直在研究树,但无法区分这些树: a) 完全二叉树 b) 严格二叉树 c) 完整二叉树 请帮我区分这些树。这些树何时何地在数据结构中使用? 最佳答案 完美的树:
我正在检查数字系统并在它们之间进行转换。 我认为十六进制值比二进制使用更少的位,这是有道理的,但最终十六进制值不是存储为位吗?这似乎最终打败了目的。 最佳答案 几乎在所有情况下,计算机使用的所有数据最
任何人都可以在 Cudd 包上指出一些好的 Material 吗?我在这里寻找一些简洁的事情。位于 http://vlsi.colorado.edu/~fabio/CUDD/ 的那个似乎没有对此事做出
我正在检查数字系统并在它们之间进行转换。 我认为十六进制值比二进制使用更少的位,这是有道理的,但最终十六进制值不是存储为位吗?这似乎最终打败了目的。 最佳答案 几乎在所有情况下,计算机使用的所有数据最
在我的应用程序中,我需要序列化一个包含任意数据类型的向量,在本例中是一个 Doubles 列表。为了序列化我正在导入 Data.Vector.Binary 的向量。 在 GHCi 中加载模块时出现以下
我尝试通过 sqlalchemy 将二进制文件存储到 postgresql 中,并从客户端上传文件。 对错误消息的一点谷歌把我带到 this source file :“包装的对象不是字节或缓冲区,这
我从表(源)中执行 INSERT SELECT,其中每列都是 VARCHAR 数据类型。 其中一列存储二进制数据,例如 '0003f80075177fe6' 我插入的目标表具有相同的列,但具有正确的数
无法简单地将二进制文件复制到 Linux 机器。哇!我今天觉得很蠢!以下是从默认镜像和 utah.edu 下载的二进制包的 tar.gz 中的文件列表: -rwxr-xr-x 1 ec2-user e
我正在阅读关于 Binary search 的不同 Material ,我不清楚它是一个贪婪的二进制文件(在我看来它不是)或者,它可以是一个具有某些特定实现的贪婪算法吗? 如果它可以是贪心的,它有什么
我见过这样写的代码: ifstream fin; fin.open("largefile.dat", ifstream::binary | ifstream::in); 现在这让我感到困惑,上面的代码
binary(10) vs char(10)character set binary有什么区别? 还有varbinary(10) vs varchar(10)字符集二进制? 它们在所有 MySQL 引
binary(10) vs char(10)character set binary有什么区别? 还有varbinary(10) vs varchar(10)字符集二进制? 它们在所有 MySQL 引
我尝试将一些数据插入到从 mysql 中的另一个表检索的表中,该表的数据类型为 BINARY(20)。 提取的数据位于变量$binary['hash']; /l÷ˆ8Ô]¿\µK prepare("I
在我的一个站点上,我有一个主用户表,其中包含每个用户的唯一用户 ID、电子邮件地址、密码等。 我需要开始跟踪很多与每个用户相关的二进制标志,比如他们是否确认了他们的电子邮件,他们是否发布了消息,他们是
在最近 SO discussion我展示了一个需要修剪顶点 6 和 7 的二叉分类树: 下面是我使用的代码: KaryTree[9, 2, VertexLabels -> {1 -> "Blood
请解释一下,对于以下查询,在 Mysql 中哪个会更快? SELECT * FROM `userstatus` where BINARY Name = 'Raja' [OR] SELECT * FRO
我通过定义 ngram_vectorizer = CountVectorizer(binary=True) 和 ngram_vectorizer = CountVectorizer(binary=Fa
在 C++ 中搜索文件读取示例时,我注意到许多示例使用 std::ios::binary 与 std::ifstream::binary std::ios::beg 与 your_file_strea
我在这里和其他论坛上看到过旧帖子,其代码与下面的代码类似,但无法弄清楚其中的一部分来自哪里。 let Source = Table.FromRows(Json.Document(Binary.
#include #include #define SIGBAD(signo) ((signo) = NSIG) int sigaddset(sigset_t *set, int signo
我是一名优秀的程序员,十分优秀!