【发布时间】:2021-06-30 10:45:08
【问题描述】:
我正在尝试使用 php 和 ldap_modify_batch() 函数更新我的 Active Directory。 当我调用该函数时,一切正常,但有时,用户输入了一个重音字符。 因此,我的 AD 中编辑的字段不包含重音字符(如“é”),但它包含其他编码标准中的等价字符(如“ã©”)。
这是一个例子:
用户输入-ldap_modify_batch()->导致我的AD
“兼容性”-ldap_modify_batch()->“兼容性”
这里是指定参数的代码
$modifs = [
[
"attrib" => "telephoneNumber",
"modtype" => LDAP_MODIFY_BATCH_REPLACE,
"values" => ["0123456789"],
],
[
"attrib" => "mail",
"modtype" => LDAP_MODIFY_BATCH_REPLACE,
"values" => ["amail@amail.com"],
],
[
"attrib" => "description",
"modtype" => LDAP_MODIFY_BATCH_REPLACE,
"values" => ["Comptabilité"],
],
[
"attrib" => "physicalDeliveryOfficeName",
"modtype" => LDAP_MODIFY_BATCH_REPLACE,
"values" => ["AOfficName"],
],
];
ldap_modify_batch($connect, $dn, $modifs);
我应该怎么做才能在我的广告中加入口音?
我的 php.ini 或其他地方有什么我应该改变的吗?
【问题讨论】:
-
您需要确保始终使用一致的文本编码,或者根据需要有意将一种编码转换为另一种编码。更多:joelonsoftware.com/articles/Unicode.html 你所描述的看起来像是 UTF8 被渲染为 ISO-8859-1 的经典示例。
-
感谢您的回复,我的输入已经是 UTF-8,但似乎这个函数 (ldap_modify_batch()) 正在将我的输入编码为 ISO-8859- 1、你觉得有可能吗?
-
好像可以,不过不知道,没用过。如果是这样,您需要告诉它使用 UTF8(如果可能),或者将文本从 UTF8 转换为它使用的任何内容(ISO-8859-1 或其他)。
-
我找到了解决方案,(但我不知道如何将主题标记为已解决)。所以我在输入中添加了对 ISO-8859-1 格式的转换。
-
发布您的解决方案作为答案并解释其工作原理。然后,几天后,您可以接受该答案。很高兴你知道了!
标签: php active-directory character-encoding ldap