对于为OAuth使用而创建的MySQL表,使用latin1而不是utf8有什么影响?

| 我正在共享服务器上设置OAuth支持。我要安装的服务器端PHP OAuth库是以下一个: http://code.google.com/p/oauth-php/downloads/list 我正在遵循此处的安装说明: http://code.google.com/p/oauth-php/wiki/ConsumerHowTo 在注释中,有一个技巧可以使用在安装包中找到的SQL脚本为您设置表和数据库。当我尝试通过phpMyAdmin中的Import(SQL)功能执行脚本时,在其中一张表上出现了“ Key Too Long \”错误。换句话说,我遇到了使用MySQL / InnoDB表时发现的最大密钥长度限制。 为了解决此问题,我将\“ charset = utf8 \”的所有实例替换为\“ charset = latin1 \”,因为utf8每个字符需要3个字节,而latin1每个字符需要1个字节。该脚本执行得很好,并且所有表均已正确创建。 据我所知,表中使用的所有字段都不需要支持多字节国际字符。我看到出现问题的唯一方法是,如果我访问的OAuth连接服务之一在其使用者密钥或秘密中使用国际字符,并且到目前为止我还没有遇到这种情况。 谁能告诉我这种解决方法是否会在任何时候在后台咬我,可能在哪里?同样,如果有人有更好的解决方案来解决“密钥过长”问题,而又不牺牲我想知道的utf8字符集的使用。
已邀请:
从技术上讲,在进行urlencoding之前,必须首先对所有字符串进行utf8编码。请参阅OAuth 1.0规范的第5.1节:使用[RFC3986]百分比编码(%xx)机制对所有参数名称和值进行转义。非保留字符集中的字符([RFC3986]第2.3节)必须进行编码。未保留的字符集中的字符不得编码。编码中的十六进制字符必须为大写。根据[RFC3629],在对文本名称和值进行百分比编码之前,必须将其编码为UTF-8八位字节。 因此,如果您有既不是ASCII也不是ASCII(位7 = 0)的所有Latin-1字符,那么在将它们从数据库中拉出之后,再在字符串中使用它们之前,必须将这些字符串重新编码为UTF-8。 OAuth协议。

要回复问题请先登录注册