将数据库从aws移动到google cloud sql时,中文字符编码错误

问题描述 投票:0回答:2

我们有一个处理中文字符的网站,并在AWS上托管。

在这里我可以毫无问题地将中文字符保存在数据库中。

现在我们转向谷歌云,我面临着在数据库中保存中文字符的问题。

它们显示为¸œ°°到ªª

我遵循所有规则,如“列应该是utf8-unicode-ci”和“数据库连接为utf8”。

它在localhost上工作正常。

任何想法有什么问题?

谢谢。

mysql amazon-web-services unicode utf-8 google-cloud-platform
2个回答
2
投票

如果数据库中的数据(列)保存(类似)两种情况下的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')

1
投票

看起来你在处理中的某个地方有latin1

一地兩檢一地兩檢的“Mojibake”

参见Trouble with UTF-8 characters; what I see is not what I stored的Mojibake

一些中文字符占用4个字节,而不仅仅是3个字节。所以,我建议你使用utf8mb4,而不仅仅是utf8

© www.soinside.com 2019 - 2024. All rights reserved.