Pak*_*ski 2 php character-encoding
这可能是一个愚蠢的问题,但似乎没有什么对我有用:
\n\n我必须比较 2 个不同数据库上的 2 列之间的值(我无权更改这些值)。\ndb1 中的编码是UTF-8。\ndb2 中的编码是latin1。
\n\n例如,这些是我正在比较的两个值,并且在比较中应该是相同的:
\n\n**db1_value** = \'Maranhão\'\n**db2_value** = \'Maranh\xc3\xa3o\';\nRun Code Online (Sandbox Code Playgroud)\n\n它们使用 utf_encode 的显示方式完全相同,显示不是问题。\n我想将变量db1_value与数据库中的字段db2_value进行比较,所以我使用非常简单的方法,如下所示:
\n\n$query = "SELECT **db2_value** FROM db2 WHERE db2_field LIKE \'" . **$db1_value** . "\'";\nRun Code Online (Sandbox Code Playgroud)\n\n比较之前如何\'Maranhão\'转换\'**Maranh\xc3\xa3o**\'?
我尝试了几种方法,iconv、utf8_encode 和其他一些方法,但它们对变量没有任何影响。我只是想知道我是否采取了正确的方法来做到这一点。
\n\n感谢对此的任何建设性评论。
\n\n多谢,
\n您需要的不是从实际值转换UTF-8,而是从HTML-ENTITIES实际值转换,幸运的是 mbstring 扩展可以进行这样的转换:
$latin1 = mb_convert_encoding($db1_value, "ISO-8859-1", "HTML-ENTITIES");
Run Code Online (Sandbox Code Playgroud)
这里我们指定HTML-ENTITIES为FROM字符集
然后你就可以$latin1和你的进行比较了$db2_value。