我正在尝试将字符集从latin1更改为utf8
问题:密码不适用于法语字符。密码适用于特殊字符(如引号,括号,美元符号等)。如果我将代码部分中的字符集转换回latin1,我可以使用法语字符登录,但不能使用utf8
到目前为止我做了什么:
请建议:
我怀疑这可能是原因,因为如果我将代码部分转换为latin1,密码工作正常。因此我认为代码和数据库是latin1,因此它可以识别特殊字符,但是当我将其更改为utf8时,它无法解释特殊的法语字母,因为它们最初存储为latin1。
PHP和MySQL版本都是最新版本。
由于我的答复很长,我决定在此处添加:
散列函数非常复杂,它使用md5,encode64和crypt函数的组合。我注意到拉丁和unicode产生的pwd不同。这就是原因,我怀疑先前使用latin1生成的pwd可以匹配pwd,而不是转换后的unicode。同样,它只发生在法语字母上,而不是ascii范围为0到127.我不知道如何处理现有用户可以成功登录的情况,并将char集更改为unicode-8。我不能使用iconv(),因为我无法区分密码是使用latin1还是unicode8创建的。除了更改数据库之外,我还需要更改数据吗?如果我正在思考,那么将数据转换为unicode8也可以处理法语字符?
答案 0 :(得分:-1)
如果您需要将char从某些Unicode转换为另一个 你可以使用这个功能
iconv()