php – 使用utf8_encode和utf8_decode的正确时间是什么时候?

字符编码对我来说一直是个问题.当正确的使用时间时,我真的没有得到.

我现在使用的所有数据库都是使用utf8_general_ci设置的,因为这似乎是一个很好的“一般”开始.从那时起我在过去的五分钟里就知道它不区分大小写.这很有帮助.

但我的问题是何时使用utf8_encode和utf8_decode?据我现在所知,如果我从我网站上的表中输出一个表单,我需要在将其插入数据库之前使用utf8_encode()值.

然后,当我把它拉出来时,我需要utf8_decode它.是这样的吗?或者我错过了什么?

最佳答案
utf8_encode和_decode是非常糟糕的误解.这些函数唯一能做的就是在UTF-8和ISO-8859-1编码之间进行转换.它们分别与iconv($str,’ISO-8859-1′,’UTF-8′)和iconv($str,’UTF-8′,’ISO-8859-1′)完全相同.没有其他魔法可以使用它们.

如果您从浏览器接收到UTF-8编码的字符串,并且希望使用与utf8字符集集的数据库连接将其作为UTF-8插入到数据库中,则此链中的任何位置都无法使用任何函数.你对这里转换编码不感兴趣,这应该是目标.

您可以使用任一功能的唯一时间是您需要在任何时候从UTF-8转换为ISO-8859-1或反之亦然,因为外部数据以此编码进行编码,或者外部系统需要此编码中的数据.但即便如此,我更喜欢明确使用iconv或mb_convert_encoding,因为它使得它更加明显和明确地发生了什么.在这个时代,UTF-8应该是你在整个过程中使用的默认编码,所以对这种转换的需求应该很少.

看到:

> What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text
> Handling Unicode Front To Back In A Web App
> UTF-8 all the way through

转载注明原文:php – 使用utf8_encode和utf8_decode的正确时间是什么时候? - 代码日志