我最近遇到了一个奇怪的字符串问题:
我有 2 张桌子:
| AgentCodes | CREATE TABLE `AgentCodes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`AgentName` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `AgentName` (`AgentName`),
) ENGINE=ndbcluster AUTO_INCREMENT=319 DEFAULT CHARSET=latin1 |
和
| AgentNumbers | CREATE TABLE `AgentNumbers` (
`AgentName` varchar(32) NOT NULL,
`TelephoneNumber` varchar(64) NOT NULL,
PRIMARY KEY (`id`),
KEY `AgentName` (`AgentName`),
KEY `TelephoneNumber` (`TelephoneNumber`),
) ENGINE=ndbcluster AUTO_INCREMENT=62 DEFAULT CHARSET=latin1 |
LIKE
对 AgentCodes.AgentName 表不起作用,我猜是因为 AgentName 有unicode
字符集,所以我将该字段上的字符集更改为Latin1
.
现在的问题是 AgentNumbers 表被用作 AsteriskPBX 队列的实时表 基本上,我得到了代理的名称并将呼叫者放入该队列。
例如,我得到了 JohnDoe 这个名字,conf 文件如下所示:
[JohnDoe]
musicclass = temp
timeout = 35
member => SIP/...
我得到一个错误,说没有这样的队列。我知道问题出在哪里,所以我将数据库中的名称复制到该 conf 文件中,并且它起作用了。
我的问题是什么可能导致该问题,在文件中看到 2 个字符串,另一个在数据库中,将它们复制/粘贴到第三个文件中(它们看起来仍然相同)并且它们不被识别为相同?
我想这与编码/字符集有关,但我想听听为什么:)