2

这可能是一个愚蠢的问题,但似乎没有什么对我有用:

我必须比较 2 个不同数据库上的 2 列之间的值(我无权更改值)。db1中的编码是 UTF-8。db2中的编码是 latin1。

因此,例如,这些是我正在比较的 2 个值,并且在比较中应该相同:

**db1_value** = 'Maranhão'
**db2_value** = 'Maranhão';

它们使用 utf_encode 以完全相同的方式显示,显示不是问题。我想将变量db1_value与数据库中的字段db2_value进行比较,所以我使用了一些非常简单的东西:

$query = "SELECT **db2_value** FROM db2 WHERE db2_field LIKE '" . **$db1_value** . "'";

在比较之前如何'Maranhão'转换'**Maranhão**'

我尝试了几种方法,iconv、utf8_encode 和其他一些方法,但它们对变量没有任何影响。我只是想知道我是否采取了正确的方法来做到这一点。

感谢对此的任何建设性意见。

非常感谢,

4

1 回答 1

4

您需要转换的不是实际值,UTF-8而是HTML-ENTITIES实际值 幸运的是 mbstring 扩展提供了这样的转换:

$latin1 = mb_convert_encoding($db1_value, "ISO-8859-1", "HTML-ENTITIES");

这里我们将 指定HTML-ENTITIESFROM字符集

然后你可以比较$latin1你的$db2_value.

于 2012-07-15T17:24:16.763 回答