什么时候使用utf8_encode和utf8_decode?

时间:2015-09-17 13:40:26

标签: php mysql

字符编码对我来说一直是个问题。当正确的使用时间时,我真的无法获得。

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

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

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

2 个答案:

答案 0 :(得分:7)

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插入到数据库中,那么任何一个函数都绝对没用这个链中的任何地方。你根本不想转换编码,这应该是目标。

外部系统需要此编码中的数据。但即便如此,我还是希望明确使用iconvmb_convert_encoding,因为它会使事情变得更加明显和明确。在这个时代,UTF-8应该是你在整个过程中使用的默认编码,因此对这种转换的需求应该很少。

请参阅:

答案 1 :(得分:-2)

基本上let dbPath = (documentsFolder as NSString).stringByAppendingPathComponent("db.sqlite") 用于utf8_encode。 当你正在使用一种语言翻译成另一种语言时,你必须使用这个函数来防止显示一些垃圾字符。

喜欢当你显示西班牙语字符时,脚本不会识别西班牙语字符,它会显示一些垃圾字符而不是西班牙语字符。

那时你可以使用。

如需了解更多信息,请点击此链接:

http://php.net/manual/en/function.utf8-encode.php