64

每当我在服务器中使用 SVN 时,我开始收到以下错误:

svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LC_CTYPE is UTF-8
svn: warning: please check that your locale name is correct

我的猜测是我的 svn 客户端(使用版本应用程序)和服务器 svn 可能有问题...

每当我使用此类命令时,如何使此警告从服务器上永远消失?

4

12 回答 12

66

检查输出

locale -a

如果没有安装 SVN 抱怨的语言环境,那么您可以安装它。

您可能需要对 Debian 或类似系统执行以下操作:

sudo dpkg-reconfigure locales

如果要手动配置语言环境:

sudo vim /etc/locale.gen # and add "en_US.UTF-8 UTF-8"
sudo locale-gen

或者,如果您locale-gen支持一个论点(不适用于 Debian):

sudo locale-gen en_GB.UTF-8
sudo locale-gen en_US.UTF-8

或者,正如 Ankit 在他的回答中所写:

export LC_ALL=C

可能有效(在您当前的会话中,或在您的 .profile 中)。

于 2012-07-04T09:34:13.153 回答
49

尽管将 LC_CTYPE 设置为空值对我有用,但根本原因是我的 Mac 上的应用程序终端在启动时设置了语言环境,即使我通过 SSH 连接到另一个系统也是如此。

这可以在终端 > 首选项中修复:

  • 选择“配置文件”选项卡并从子选项卡中选择“高级”
  • 取消选中“启动时设置语言环境变量”
于 2013-11-20T10:57:37.650 回答
28

如果要解决此问题,请手动设置“LC_ALL”变量。

要使其永久化,只需编辑文件“/etc/environment”并添加以下行:

LC_ALL=C

保存文件并退出编辑器。为了应用它,您必须注销当前的 shell 会话。下次登录时,SVN 的问题就会消失。

于 2012-07-03T06:31:08.297 回答
14

LC_ALL 和 LANG 设置对我不起作用,但 LC_CTYPE 起作用。

LC_CTYPE=en_US.UTF-8
于 2012-12-27T14:07:30.547 回答
9

Debian Jessie上:

我跑了:

sudo dpkg-reconfigure locales

添加并安装了缺少的语言环境。然后它起作用了。

于 2016-03-07T11:15:16.143 回答
3

SendEnv LANG LC_* 用/etc/ssh/ssh_config注释掉这些行对我有帮助(openSUSE)

于 2015-08-03T05:30:41.963 回答
2

这是由于您的系统上没有生成正确的语言环境造成的。

您希望在/etc/locale.gen中支持的未注释行

例如:

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

然后运行​​sudo locale-gen

于 2015-03-20T08:27:13.470 回答
1

我们公司在使用 IntelliJ 时也遇到了这个问题。我的一个同事刚刚修好了。

对我们来说,问题SendEnv LANG LC_*在于/etc/ssh/ssh_config. 当我注释掉那行时,一切正常。

于 2016-06-30T07:44:29.053 回答
1

对于 iTerm2:

Profiles → Open Profiles… → Edit Profiles… → Terminal → Unckeck自动设置语言环境变量

于 2016-11-07T10:01:43.993 回答
0

我发现结合几个答案会产生正确的行为。

  1. 我们必须安装对正确语言环境的支持(对于 sunos 的 localadm,对于 linux 的 locale-gen)
  2. 我们必须将 LC_ALL 设置为适当的语言环境

这取决于源代码树中的文件名类型。例如,我有英语、希伯来语和阿拉伯语。en_US.UTF-8 对我有用“C”本身导致我无法更新的文件。

于 2012-12-27T22:11:03.863 回答
0

当我连接到远程 ssh 服务器时遇到问题(ssh 由 svnserve -> svn update 命令使用)。

原因是远程服务器没有本地服务器上 $LANG 中设置的可用语言包。

您可以通过“locale -a”查看已安装的语言包。$LANG 语言必须在远程服务器上配置。

例如

本地服务器:LANG=en_US.UTF-8

远程服务器:locale -a -> 只有 de_DE.UTF-8 可用

解决方法:只需在远程服务器上安装缺少的语言包:dpkg-reconfigure locales;

顺便说一句:选择的默认语言无关紧要。

于 2018-07-09T20:00:52.317 回答
0

在 RHEL6 系统上再添加一个对我有用的选项。

/etc/sysconfig/i18n包含LANG="en_US.UTF-8"locale -a | grep -i en_us显示en_US.utf8

更新/etc/sysconfig/i18n以匹配输出后locale -a的问题已解决。

于 2020-07-20T15:52:45.420 回答