我正在尝试保存“ą”,“ć”,“ł”等字符,但它们会作为问号保存在数据库中(我使用phpMyAdmin保存它们)。
数据库和表的排序规则是utf8_bin。
答案 0 :(得分:9)
尝试将排序规则更改为:
utf8_unicode_ci
或
utf8_polish_ci
您可以参考:http://mysql.rjweb.org/doc.php/charcoll
您也可以尝试使用以下方法更改特定列:
ALTER TABLE tbl MODIFY COLUMN txt TEXT CHARACTER SET utf8
答案 1 :(得分:1)
您还可以将列从vchar更改为nvchar。然后在向DB中插入值时记得ad N,如下所示:N'ŁÓDŹ'(在持久性框架中你应该有某种NString表示)
来自文档:
Nvarchar存储UNICODE数据。如果您有存储UNICODE或多语言数据的要求,则可以选择nvarchar。 Varchar存储ASCII数据,应该是正常使用的数据类型。关于内存使用情况,nvarchar每个字符使用2个字节,而varchar使用1个
答案 2 :(得分:1)
我已经搜索了很多,最后,我得到了一个解决方案:
ALTER TABLE tableName MODIFY COLUMN columnName VARCHAR(64) CHARACTER SET `binary`;
您可以更改VARCHAR(64)
以符合您的需求。我希望这可以帮助别人。 请注意,我不仅要求存储波兰语字符,还要存储法语和西班牙语字符。因此上述解决方案可能仅适用于波兰字符。