mb_convert_encoding()而不是CONVERT USING不起作用

问题描述 投票:-1回答:1

我有以下情况:

为了使我的SELECT查询能够区分变音符号(ä/ö/ü/ß不被解释为a / o / u / s),我添加了:CONVERT ($var USING latin1)到我的MySQL SELECT语句。 效果很好。

我想做的是:

在我在语句(我在PHP中组装)中使用变量之前,先对PHP中的变量进行转换。我希望这可以工作:$var_latin1 = mb_convert_encoding($var, 'ISO-8859-1');这不起作用。

为什么我要这样做?我的查询很长,并且包含很多PHP变量,因此它包含很多CONVERT USING出现,这使查询有些混乱。

mb_detect_encoding($var)在ISO转换之前和之后返回'ASCII'。我的数据库,表和列位于latin1中,但是动态“注入”的PHP变量似乎实际上是UTF-8字符集。这使得必须进行转换。

感谢您提供任何帮助,即使只是帮助我理解了为什么PHP方式不起作用。

php mysql character-encoding converters iso-8859-1
1个回答
0
投票
但是,请提供有关您拥有的-SHOW CREATE TABLE,数据来自何处等的更多详细信息,以及您的目标是-比较,出于其他原因去除口音等。

我问是因为转换方法和归类方法完全不同,并且可能具有不同的意外副作用。

© www.soinside.com 2019 - 2024. All rights reserved.