【问题标题】:What determines the encoding of File#path?什么决定了 File#path 的编码?
【发布时间】:2011-09-01 07:26:42
【问题描述】:

在 ruby​​ 1.8.7 中,什么决定了File#path 的编码是什么?文件系统?某处的配置?每个单独文件的编码?

我在不同操作系统上的其他相同环境中看到了两种不同的编码。

相关问题:Reading filename in multiple OS without encoding problem with Ruby

更新

我想我需要设置/知道文件系统的编码......但这并没有帮助(除非我把它放在错误的地方)......

导出 LC_ALL=en_US.UTF-8 导出 LC_CTYPE=en_US.UTF-8

【问题讨论】:

  • 我不知道File#name的方法。哪个模块包含这个?它既不在 Ruby 1.8.7 核心中,也不在 fileutils 模块中。
  • 哎呀!累了的大脑...File#path...现在修复
  • 它似乎返回从 FS 接收到的原始字节字符串。要正确解释它,您需要知道文件系统的编码,例如使用 iconv 来翻译它(如您所指的帖子所示)

标签: ruby character-encoding filesystems


【解决方案1】:

理论上你可以从

中读取系统的编码
ENV['LC_LANG']

你可以为 ruby​​ 脚本设置它:

ENV['LC_LANG']=en_US.UTF-8

其他编码特定的环境变量也是如此。

【讨论】:

  • 这真的是理论上的,因为这背后还有更多(用户通常设置LC_ALL,LC_COLLATE等东西)。
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2012-07-03
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多