![为什么 Windows 文本文件编码在 Linux 系统中打开后崩溃?](https://linux22.com/image/188749/%E4%B8%BA%E4%BB%80%E4%B9%88%20Windows%20%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81%E5%9C%A8%20Linux%20%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%89%93%E5%BC%80%E5%90%8E%E5%B4%A9%E6%BA%83%EF%BC%9F.png)
我使用 Debian,有时需要挂载 Windows 磁盘,因为我想从 Windows 读取一些 *.txt 文件。有时没问题,但有时在我使用 Debian 系统编辑或读取文件,然后重新启动到 Windows 并尝试打开文件而不是
This is text in my txt file.
我懂了
This is td�T$(�b.U�D$$�X��B�D$,�@��Z�Eȃ��D$�D$DZ��
我使用鼠标垫作为我的 Debian 编辑器和 Windows 的默认记事本。有什么办法可以恢复文字吗?如何解决这个问题以便下次不再发生这种情况?
答案1
使用 Linux 中的 file-命令测试崩溃文件,并将其与非崩溃文件进行比较。
最有可能的是,文件编码不匹配,并且可能涉及一些不需要的自动检测。
20 年来,Linux 在大多数系统上都提供了 UTF-8,您不应该改变这一点。 Windows 加入得比较晚,但最近的安装也应该默认使用 utf-8。
某些编辑器可能带有旧的默认设置,例如 CP850 或 ISO-LATIN-x,其中 x 是数字或其他内容。
为了避免歧义,有人采取了一些措施,将 BOM 放在文件的开头,这使问题变得更糟,因为,例如,Linux 中的 shell 脚本在#!/bin/bash
开头使用 Shebang(如 )并且不接受根本没有 BOM。
如果可能的话,将所有工具设置为 UTF-8 并尽可能转换旧文件(Linux 程序: iconv)。
和
file clean-and-easy.txt
file crashing.txt
您应该首先查看 file 命令是否报告某些内容,例如ascii-text with BOM
或UTF-8 Unicode text
。