我们有一个处理中文字符的网站,并在AWS上托管。
在这里我可以毫无问题地将中文字符保存在数据库中。
现在我们转向谷歌云,我面临着在数据库中保存中文字符的问题。
它们显示为¸œ°°到ªª
我遵循所有规则,如“列应该是utf8-unicode-ci”和“数据库连接为utf8”。
它在localhost上工作正常。
任何想法有什么问题?
谢谢。
如果数据库中的数据(列)保存(类似)两种情况下的UTF8编码数据,并且处理网页中数据的代码/平台是相同的(例如,不是python 2与python 3相比),差异可能是当前的本地设置,无论是Google服务器(环境变量),SQL客户端(UTF8设置)还是php设置。让我们从sql-client开始:尝试运行php - 函数
mysqli_character_set_name()
获得编码。如果不是UTF-8,则设置为
mysqli_set_charset('utf8')
如果这不起作用,请通过将META html-tag中的字符集设置为utf-8来确保php-html的内容
charset=utf-8
并执行它
declare(encoding='utf8')
看起来你在处理中的某个地方有latin1
。
一地兩檢
是一地兩檢
的“Mojibake”
参见Trouble with UTF-8 characters; what I see is not what I stored的Mojibake
一些中文字符占用4个字节,而不仅仅是3个字节。所以,我建议你使用utf8mb4
,而不仅仅是utf8
。