这可能是一个愚蠢的问题,但似乎没有什么对我有用:
我必须比较2个不同数据库(我无权更改值)的2列之间的值。 db1 中的编码为UTF-8。 db2 中的编码是latin1。
所以,例如,这些是我正在比较的2个值,在比较中应该是相同的:
**db1_value** = 'Maranhão'
**db2_value** = 'Maranhão';
它们使用utf_encode以完全相同的方式显示,显示不是问题。 我想将变量 db1_value 与db中的字段 db2_value 进行比较,所以我使用的东西非常简单:
$query = "SELECT **db2_value** FROM db2 WHERE db2_field LIKE '" . **$db1_value** . "'";
如何在比较之前将'Maranhão'
转换为'**Maranhão**'
?
我尝试了几种方法,iconv,utf8_encode和其他一些方法,但它们对变量没有任何影响。我只是想知道我是否采取了正确的方法来做到这一点。
对此有任何建设性意见。
非常感谢,
答案 0 :(得分:4)
您需要不是从UTF-8
而是从HTML-ENTITIES
转换为实际值
幸运的是,mbstring扩展具有这样的转换:
$latin1 = mb_convert_encoding($db1_value, "ISO-8859-1", "HTML-ENTITIES");
在此,我们将HTML-ENTITIES
指定为FROM
字符集
然后,您可以将$latin1
与$db2_value
进行比较。