如何不使用 cvs2svn 将 Unicode 文本文件转换为 UTF-8?

Posted

技术标签:

【中文标题】如何不使用 cvs2svn 将 Unicode 文本文件转换为 UTF-8?【英文标题】:How to not convert Unicode text files into UTF-8 with cvs2svn? 【发布时间】:2013-06-05 11:03:50 【问题描述】:

我使用 cvs2svn 工具将我的 CVS 数据库转换为 SVN,但我所有的 unicode 文本文件都转换为 UFT-8,我不希望这样。

我怎样才能避免这种情况?是否有标志或参数来保存我的 Unicode 文件?

【问题讨论】:

您意识到 Unicode 不是一种编码,而 UTF-8 是 Unicode 的一部分? 【参考方案1】:

我假设您错误地称为 Unicode 的是 UTF-16LE。 cvs2svn中有一个选项,在文档中:

--encoding=ENC

使用 ENC 作为 CVS 存储库中文件名、日志消息和作者姓名的编码。 (通过使用 --options 文件,可以指定一组编码用于文件名,另一组用于日志消息和作者姓名。)可以多次指定此选项,在这种情况下,将尝试使用编码订购直到成功。默认值:ASCII。其他可能的值包括标准 Python 编码。

所以你可以尝试将--encoding=utf_16_le 传递到命令行。

【讨论】:

【参考方案2】:

Windows (误导性地)称为“Unicode”的编码是 UTF-16LE。这是一个麻烦的编码,因为它不兼容 ASCII; Windows 采用它是因为当时(在发明 UTF-8 之前)它被认为是 Unicode 文本最常见的编码。如今,UTF-8 绝对是文件内 Unicode 存储的首选编码。

虽然 dda 的回答可能有效 (+1),但 Subversion 不支持将 UTF-16 文件作为文本处理 - 它们将作为二进制文件处理,这意味着您将无法获得可用的 diff/patch/merge。出于这个原因,我强烈建议让 cvs2svn 继续并将文件更改为 UTF-8。

【讨论】:

以上是关于如何不使用 cvs2svn 将 Unicode 文本文件转换为 UTF-8?的主要内容,如果未能解决你的问题,请参考以下文章

cvs2svn mime 类型

cvs2svn 和合并信息

使用cvs2svn迁移cvs至svn

使用 cvs2svn 时,如何重命名符号以使分支和标记解析为相同的名称?

cvs2svn 迁移

解决Scrapy抓取中文网页保存为json文件时中文不显示而是显示unicode的问题