【问题标题】:cp doesn't copy special characterscp 不复制特殊字符
【发布时间】:2019-04-05 08:46:05
【问题描述】:

我在 Debian 机器上运行一个 Java 程序。其中,该软件复制了一些目录:cp -r --remove-destination /etc/some/dir /opt/some/dir。但是,当其他人运行此程序时,某些特殊字符(例如 é)不会正确复制(例如?)。我认为它来自本地用户。但我不想修改它。

有人知道如何使用cp 或其他命令复制一些带有特殊字符的文件而不篡改本地用户吗?还是我必须用 Java 文件复制 API 来解决这个问题?

谢谢!

【问题讨论】:

  • 请准确地说:您指的是文件名还是文件内容,在这种情况下,您可能指的是“文本文件”?内容应按字节复制。如果源系统和目标系统具有不同的字节顺序,并且您使用 UTF 没有 BOM,这可能是个问题。

标签: bash debian special-characters cp


【解决方案1】:

你的/etc/some/dir上挂载了什么样的文件系统?

尝试使用选项iocharset=utf8进行挂载

【讨论】:

  • 类型为ext4。我尝试将选项 iocharset=utf8 添加到 /etc/fstab 然后 mount -a 但问题仍然存在。
【解决方案2】:

我终于找到了一个解决方案来指定Java使用的编码:

java -Dfile.encoding=UTF-8 file.jar

如果不指定,JVM 将从执行.jar 的用户的环境变量中获取编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 2019-09-30
    • 2013-02-22
    • 2016-07-29
    • 2015-05-20
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多