奇怪的编码问题

时间:2009-01-16 13:59:29

标签: php mysql encoding

我有一个用latin5字符集编码的数据表,表中的所有列也都是latin5。从mysql控制台输入“SET NAMES'latin5'”并查询表结果是否正常。当我尝试删除或插入/更新所有新数据的编码是完美的。但是当我尝试将Iso-8859数据(也用mb_detect_encoding验证)插入数据库并尝试插入没有“SET NAMES”的数据时,它不会插入/更新/选择正确的编码或当我使用“SET”时NAMES'latin5'“它没有以正确的方式插入/更新,但选择是正确的latin5数据正在进行适当的编码只有设置名称'latin5'。当我使用set names'utf8'时,select查询编码错误,但插入/更新正常。

我之所以要求我们去生产。这让我想到未来可能出现的问题。

1 个答案:

答案 0 :(得分:2)

mb_detect_encoding不知道你的字符串是什么编码。这是一个合格的猜测,但不能保证它会猜对。特别是如果候选者都是单字节编码,就像latin1和latin5一样。

如果你想让charsets正确的话,真的没有什么可以替代你知道你在做什么。我建议你至少阅读几次这些页面:

请特别注意,网页是使用http标头提供的,该标头指定了页面编码的字符集。除非您从php脚本中明确设置此项,否则您将使用默认的Web服务器,这可能因服务器而异。

另外,要小心实际了解正在发生的事情,而不是进行反复试验。后者可以轻松地为您提供在某些环境中有效的东西,但不是在每种情况下都可以。

最后。如果您有任何选择,我认真建议您使用utf-8。拉丁语5会给你带来很多悲伤。