You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OU名称含西里尔字符时如何配置TeamCity LDAP同步

解决方案

问题根因

你遇到的乱码和NO_OBJECT报错是因为Java默认以ISO-8859-1编码读取.properties配置文件,西里尔字符不在该编码覆盖范围内,直接写入UTF-8格式的西里尔字符会被错误解析,就会出现你报错日志里的乱码搜索基路径。TeamCity界面编辑的配置存储在数据库中,使用UTF-8编码,所以显示正常。

修复步骤

1. 转义ldap-config.properties中的非ASCII字符

JDK自带的native2ascii工具可以将UTF-8字符转换为Java properties支持的Unicode转义序列:

  • 准备一个UTF-8编码的临时配置文件,写入你原有的配置内容
  • 执行转换命令:
    native2ascii -encoding UTF-8 原配置文件路径 ldap-config.properties
    转换后你的teamcity.users.base配置会变成类似如下格式,即可被正确识别:
    teamcity.users.base=OU=\u0421\u0432\u043e\u0438 \u041b\u044e\u0434\u0438,OU=\u041e\u0444\u0438\u0441

2. 修正ldap-mapping.xml编码

确保xml文件满足两个要求:

  • 文件头部明确指定编码:<?xml version="1.0" encoding="UTF-8"?>
  • 文件实际保存格式为UTF-8,不要用ANSI等其他编码保存

可选方案:全局设置JVM编码(适用于TeamCity 2020及以上版本)

如果不想每次修改properties都转义,可以修改TeamCity服务端启动参数,添加两个JVM参数:
-Dfile.encoding=UTF-8
-Dsun.jnu.encoding=UTF-8
重启TeamCity服务后,直接写入UTF-8格式的西里尔字符到ldap-config.properties即可正常读取。

验证

配置修改完成后重启TeamCity服务,进入LDAP同步页面查看搜索基路径是否显示为正常的西里尔字符,无乱码后再执行同步测试即可。

内容的提问来源于stack exchange,提问作者Oleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:36:01