我正在获取设置在共享服务器上的OAuth支持。服务器端PHP的OAuth库我试图安装是这个:对于为OAuth使用而创建的MySQL表,使用latin1而不是utf8会产生什么影响?
http://code.google.com/p/oauth-php/downloads/list
而且我下面发现这里的安装说明:
http://code.google.com/p/oauth-php/wiki/ConsumerHowTo
中调有一个尖使用安装包中的SQL脚本为您设置表和数据库。当我尝试通过phpMyAdmin中的导入(SQL)功能执行脚本时,在其中一个表上出现“Key Too Long”错误。换句话说,我使用MySQL/InnoDB表时发现了最大密钥长度限制。
为了解决这个问题,我将“charset = latin1”的所有“charset = utf8”替换为utf8每个字符需要3个字节,latin1每个字符1个字节。该脚本执行得很好,所有表格都正确创建。
据我所见,表中使用的所有字段不需要支持多字节国际字符。我发现问题的唯一方法是如果我访问的某个OAuth连接服务在其消费者密钥或秘密中使用国际字符,并且迄今为止我还没有遇到过这种情况。
任何人都可以告诉我,这种解决方法是否会在任何时候在背后咬我,哪里可能?另外,如果有人有更好的解决方案来解决“key too long”问题而不牺牲使用utf8字符集,我想知道它。
utf8通常不需要每个字符3个字节,根据字符的不同,它需要从1到5的任何位置。正常ASCII范围内的任何内容在utf8中都完全相同。 – 2011-04-19 02:02:52