我遇到过这样的情况:我有一个 Java 程序,它首先写入一个文本文件,然后调用“CMD /C CLIP < textfile”,以便能够将任意大的文件放在 Windows 剪贴板上。效果很好。
现在我发现存在编码问题,因此我确保拥有有效的 UTF-8 编码文件(包括 BOM,并且可以在 vim 中正确打开),但 CLIP.EXE 似乎不支持更改 BOM预期编码为 UTF-8。
那么,我应该如何告诉 Windows 和/或 CLIP.EXE 该文件是 UTF-8 编码的并相应地处理它?(如果 UTF-16 或 UTF-32 等其他编码更适合 Unicode,我可以使用它)。
显示该行为的系统是 Windows 7,CMD.EXE 中的默认代码页是 850。我需要它在我无法控制的系统上工作。
我通常需要用 LaTeX 写数学,在看到这个问题后:Entering unicode math Symbols。我带着一些小问题来到这里。
\n\n我发现这不太舒服,我想知道是否有一种方法可以告诉系统区分 left 和 right alt \xe2\x8c\xa5。这样我就可以在一个字母中包含更多符号。
\n\n而且,另一个问题是是否有一种方法可以将 变成caps lock \xe2\x87\xaa不同的密钥(与 具有相同的用途alt \xe2\x8c\xa5,但系统应该区分它们)。通过这种方式,我可以使用,例如,
\n\n\xce\xb4),以及\xe2\x88\x82)。这不是一个很好的例子,但或多或少是不言自明的。当然,然后caps lock \xe2\x87\xaa不应该是打开/关闭按钮。仅当按下时才应打开它(与 完全相同alt \xe2\x8c\xa5)。
\nGPG 似乎支持 Unicode,但我无法让它实际工作
\n\n% gpg --utf8-strings --display-charset utf-8 --edit-key king@example.com\ngpg (GnuPG) 1.4.15; Copyright (C) 2013 Free Software Foundation, Inc.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\ngpg: key xxxxxxxx: duplicated user ID detected - merged\nSecret key is available.\n\ngpg: checking the trustdb\ngpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model\ngpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u\npub 4096R/xxxxxxxx created: 2014-02-20 …Run Code Online (Sandbox Code Playgroud) 一位同事给了我一个需要分析的一些数据的 zip 存档,但不幸的是,文件名在创建存档或在我的计算机上提取存档时的某个地方已被损坏。
\n\n该存档包含 3000 个文件,其文件名包含日语字符。他在 Windows 机器上压缩了它,而我使用的是 Mac。如果我双击存档,我会得到如下所示的文件名:
\n\n0001_rt_n\xcc\x83\xc2\xbae\xcc\x81a\xcc\x8a-i\xcc\x88A\xcc\x8ai\xcc\x81\xc2\xa0n\xcc\x83\xc2\xbae\xcc\x81a\xcc\x8a-a\xcc\x80I\xcc\x81i\xcc\x82\xc2\xa0_E\xcc\x81AA\xcc\x8a[E\xcc\x81a\xcc\x83E\xcc\x81eE\xcc\x81BA\xcc\x8a[.dat\nRun Code Online (Sandbox Code Playgroud)\n\n另一方面,如果我在命令行中使用“unzip”,则会出现相同的文件
\n\n0001_rt_%FB+%C4%EE-%F2%FC%C6-%FB+%C4%EE-%EA%DB%F6-_%E2A%FC[%E2%EF%E2e%E2B%FC[.dat\nRun Code Online (Sandbox Code Playgroud)\n\n文件的内容很好(它们不包含任何日语字符,仅包含数字),但我需要获取原始文件名。
\n\n有什么方法可以恢复正确的文件名,而无需访问位于另一个城市的另一台计算机上的原始文件?如果可能的话,我准备编写一个快速的 Python 脚本,但我对字符编码不太了解,所以我不知道如何去做。
\nI\xe2\x80\x99m 尝试键入一些包含字母的 Unicode 字符。我使用的是 Windows 7,但该问题也出现在 Windows 8 中。例如 (U+1F3BB)。我可以\xe2\x80\x99t 键入它,因为 Firefox 和我尝试键入它们的所有其他程序都有Alt+F或Alt+B作为其他内容的快捷方式。
\n\n无论如何我可以解决这些快捷方式吗?我\xe2\x80\x99已经尝试过Alt++ Shift(代码)并编辑注册表。
\n我有一个简体中文文本,当读取为 UTF-8 开头时, MandarinTools\xc2\xb4\xc3\x93\xc2\xba\xc3\x9c\xc2\xbe\xc3\x83\xc3\x92\xc3\x94\xc3\x87\xc2\xb0\xc2\xbf\xc2\xaa\xc3\x8a\xc2\xbc的在线工具(修复损坏的中文电子邮件的第一个搜索结果)将其修复为正确的,但不清楚它是如何修复的那。通过使用在线工具和十六进制编辑器,我知道每个字符都被编码为固定长度的 32 位:\xe4\xbb\x8e\xe5\xbe\x88\xe4\xb9\x85\xe4\xbb\xa5\xe5\x89\x8d\xe5\xbc\x80\xe5\xa7\x8b
c2b4 c393 \xe4\xbb\x8e\nc2ba c39c \xe5\xbe\x88\nc2be c383 \xe4\xb9\x85\nc392 c394 \xe4\xbb\xa5\nc387 c2b0 \xe5\x89\x8d\nc2bf c2aa \xe5\xbc\x80\nc38a c2bc \xe5\xa7\x8b\nRun Code Online (Sandbox Code Playgroud)\n\n这也表明一个字符被编码为 c2**-c3** 范围内的两个 16 位字。对于 UTF-16,这些字符的第一个 16 位字始终为 0。UTF-8 仅使用每个字符 24 位,而代码页 936 此处仅使用每个字符 16 位。\n我可以使用哪种方法来确定正确的编码转换?
\n\nutf-8表示:
\n\ne4bb 8e \xe4\xbb\x8e\ne5be 88 \xe5\xbe\x88\ne4b9 85 \xe4\xb9\x85\ne4bb a5 \xe4\xbb\xa5\ne589 8d \xe5\x89\x8d\ne5bc 80 \xe5\xbc\x80\ne5a7 8b \xe5\xa7\x8b\nRun Code Online (Sandbox Code Playgroud)\n\ncp936表示:
\n\nb4d3 \xe4\xbb\x8e\nbadc \xe5\xbe\x88\nbec3 \xe4\xb9\x85\nd2d4 \xe4\xbb\xa5\nc7b0 \xe5\x89\x8d\nbfaa \xe5\xbc\x80\ncabc \xe5\xa7\x8b\nRun Code Online (Sandbox Code Playgroud)\n 我使用 OCR 程序将一些扫描的页面转换为 MS Word 文件。
\n转换后可以\xc2\xac在许多单词的中间找到该符号。
我尝试搜索并替换它,但单词无法检测到它。
\n它是什么以及如何删除它?
\n每当我导入 Calibre 电子书管理器库中的一本书时,它都会将名称/标题转换为英语,删除欧洲单词中的所有重音,并用罗马字替换非拉丁语(例如俄语)单词。
在当今的 Unicode 世界中,这没有技术上的必要性,而且它也会损害可用性,因为如果你精通它的话,在原始脚本评分器中阅读(和搜索)一个单词总是比罗马化更容易(而且我显然能够流利地掌握我所读书籍所用的所有语言)。
该Preferences - Saving books to disk - Convert non-English characters to English equivalents复选框允许您在图书导出时关闭此功能,但它仍会将本地库和阅读器设备库中的所有文件的名称罗马化。
如何关闭库文件名的罗马化?
有时当我pdftotext这样做时会产生完美的文本。我认为这是因为实际的 unicode 文本数据直接嵌入到 PDF 本身中,并且只需读出即可。
但其他时候(大约一半或更多的文档不只是直接扫描的图像)它会导致〜奇怪的字形〜代替诸如变音符号和重音符号之类的东西,有时甚至是看起来模糊的字母。
\n\n例如,这个约鲁巴语词典 PDF就存在这些问题。如果你运行这个:
\n\npdftotext yoruba.pdf yoruba.txt\nRun Code Online (Sandbox Code Playgroud)\n\n你最终会看到这些词散布在各处:
\n\nexpected actual\n-------- ------\nlairot\xe1\xba\xb9le lairot4ille\nik\xe1\xbb\x8dsil\xe1\xba\xb9 ikljlsil4il\nlog\xc3\xb3 logb\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,重音符号\xc3\xb3变成了字母b。但并不是每个 \xc3\xb3 都变成了 doc 中的 ab。许多人这样做,但不是全部。与\xe1\xba\xb9a相同4il。许多人都变成这样,可能是所有人。大多数时候(我的感觉是)更晦涩的重音符号/变音符号\xe1\xba\xb9会被转换成陌生的字符或字符序列。
为什么是这样?是 OCR 的东西吗?或者PDF实际上是否嵌入了纯文本(即它不是图像的扫描文档)?然而,它在某种程度上没有被正确解码。我想知道这个问题的答案,所以至少我知道这是 OCR 问题或编码/解码问题。
\n\n如果这是一个编码问题,那就很有趣了。那么我的问题是,我可以告诉pdftotext使用一些晦涩的解码技术吗?或者是什么。
我提出这个问题的部分原因是我最近发现了一些网页是用 或 编码的ucs2,latin1有些甚至是用一些奇怪的windows2255或某种编码编码的。因此,我必须修改编码/解码才能正确提取 HTML 文档中的文本。我想知道在这种情况下同样的情况是否也适用于 PDF。
另一个遇到此问题的文档是纳瓦霍词典。我不知道这是 OCR …