【问题标题】:Saving a file with a Cyrillic name使用西里尔文名称保存文件
【发布时间】:2023-03-18 12:21:01
【问题描述】:

如何正确保存带有西里尔文名称的文件?

现在文件名如下所示:“Максим Р—РёРЅСЏРєРѕРІ feat. Indigo - You And Me Only”。正确的名称是“Максим Зиняков feat. Indigo - You And Me Only”。

我从 HTTP URL 获取文件:

agent = Mechanize.new
agent.get(url).save_as("#{mp3_dir}/#{title}.mp3")

【问题讨论】:

  • 你使用的是什么版本的 ruby​​?
  • 如果您使用的是 unicode,我强烈建议您使用 1.9.2,因为它更好。
  • 确保您正在抓取的网站的编码与您的文件系统使用的编码相匹配。
  • 如果编码不同?站点有 windows-1251。
  • 您可能必须以某种方式将其转换为 UTF-8。尝试使用 iconv 库(或移至 1.9)。

标签: ruby file character-encoding filenames


【解决方案1】:

正如有人提到的,您可能需要使用iconvtitle 字符串转换为utf-8:

require 'rubygems'
require 'mechanize'
require 'iconv'

agent = Mechanize.new
# If source encoding is indeed windows-1251, 'from' is CP1251
title = Iconv.conv('UTF8', 'CP1251', title)
agent.get(url).save_as("#{mp3_dir}/#{title}.mp3")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多