我有一台运行 Debian stable 的旧电脑,需要升级。问题是它对所有东西都使用 latin1 (ISO-8859-1),而且由于世界其他地方已经转向 UTF-8,我也计划转换这台计算机。
对于这个问题,我将重点关注 Samba 提供的文件,其中一些文件名中有一些 latin1 字符(如 åäö)。
现在我的计划是将这台旧计算机的所有数据转移到一台运行 Debian stable(但使用 UTF-8)的全新计算机上。
有人有好主意吗?
注意:稍后我打算用iconv
这样的东西来转换一些文件的内容:
iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt
但是我不知道将文件系统转换为自身的好方法。
注意:通常我通常只是scp
从一台计算机到另一台计算机,但后来我在 utf-8 文件系统中得到了 latin1 字符。
更新:用文件名中的文件(带有有趣的字符)进行了一次小型测试,这似乎可以工作。
convmv -r -f ISO-8859-1 -t UTF-8 *
注意:-r
=递归;-f
/ -t
= 从/到。
所以只能用--notest
convmv -r -f ISO-8859-1 -t UTF-8 --notest *
仅此而已。
使用 convmv:
apt-get 安装 convmv
:-)
在传输文件之前遇到此页面的读者请注意:
您可以使用最近的 rsync 和 --iconv 选项进行传输:
(是的,iconv 字符集的顺序不直观!)
因为当传输已经完成时,convmv 确实是解决方案。
有一个Unicode Char Encoding Converter,支持Unicode(UTF-8/UTF-16/UTF-7/UTF-32)和非Unicode(Ansi,简体GBK,繁体BIG5,日文SHIFT-JIS,日文 EUC-JP、韩文 euc-kr 字符集编码等)。
在当前目录中执行:
如果文件不在目标编码中,我会先测试,否则你可能会弄乱你的文件,我猜。(下面的示例到 zsh)您可以调整代码并将其放在“for”循环中。