windows - 如何在 Windows 中使用 subversion 操作以 unicode 命名的文件?

标签 windows svn unicode

假设我使用代码页为 950(Big5,繁体中文)的 Windows 7,我想操作一些混合了 unicode 名称的文件,例如 简体中文文件.txt(GB2312,简体中文) svn.

如果我使用 chcp 950,当我运行时:

svn add .\简体中文文件.txt

我得到一个错误:

svn: warning: W155010: 'D:\path\to\work-dir\?体中文文件.txt'
not found
svn: E200009: Could not add all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation

如果我使用 chcp 65001 (UTF-8),我会得到一个更糟糕的错误:

svn: warning: W155010: 'D:\path\to\work-dir\?体svn: E200009: C
ould not add all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation

我想尝试 chcp 1200 (UCS-LE) 但它说:

Invalid code page

看起来 TortoiseSVN 可以正确地操作那些文件。但是我需要编写调用 svn 的脚本来运行多个自动化作业。有什么解决办法吗?

最佳答案

像 svn 这样使用 C 标准库的文件 IO 函数的 MS 实现的程序无法读取包含当前代码页之外的字符的命令输入或文件名。您必须分别为每个文件 chcp 到合适的代码页(例如,中文为 936)。

理论上代码页 65001 可以涵盖每个字符,但不幸的是,MS C 运行时存在严重的错误,通常会在使用此代码页时破坏应用程序。微软一直未能解决这个长期存在的问题,使 UTF-8 在 Windows 下成为二等公民。

将来它看起来像http://subversion.tigris.org/issues/show_bug.cgi?id=1537应该通过使用直接 Win32 API 而不是 C stdlib 来执行控制台写入来解决问题,尽管我看不到相关代码更改的位置以确认控制台输入和文件访问是否得到类似解决。

关于windows - 如何在 Windows 中使用 subversion 操作以 unicode 命名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228046/

相关文章:

python - 为什么 Python 会自动将字符串中的十六进制编码为 UTF-8?

windows - 更改 Windows 8.1 中 Powershell 的默认布局和属性

java - 知识产权共享

mysql - mysql 中的列的字符串值 : '\xF0\x9F\x92\x8F\x0A#. ..不正确?

git - 通过 HTTP 转储远程基于 Git 的 SVN 存储库时出错

svn - 如何在VSS和SVN之间同步

c# - 将 White.UIItems.TextBox.Text 设置为 unicode

windows - Windows程序文件夹中全局可写批处理文件的安全问题

windows - 如何让我的安装程序将 Visual Studio 2013 (VC120) 运行时部署到 Windows XP?

xcode - SVN + 保管箱 : sync project on Windows and Mac