如何不使用 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?的主要内容,如果未能解决你的问题,请参考以下文章