4

我正在尝试保存诸如“ą”、“ć”、“ł”之类的字符,但它们作为问号保存在数据库中(我使用 phpMyAdmin 保存它们)。

数据库和表的排序规则是 utf8_bin。

4

3 回答 3

11

尝试将排序规则更改为:

utf8_unicode_ci 

或者

utf8_polish_ci 

可以参考:http: //mysql.rjweb.org/doc.php/charcoll

您也可以尝试使用以下方法更改特定列:

ALTER TABLE tbl MODIFY COLUMN txt TEXT CHARACTER SET utf8
于 2012-11-25T01:00:31.950 回答
2

我已经搜索了很多,最后,我得到了一个解决方案:

ALTER TABLE tableName MODIFY COLUMN columnName VARCHAR(64) CHARACTER SET `binary`;

您可以根据VARCHAR(64)需要进行更改。我希望这可以帮助别人。请注意,我不仅需要存储波兰字符,还需要存储法语和西班牙语字符。所以上面的解决方案可能只适用于波兰字符。

于 2018-03-19T14:53:39.430 回答
1

您还可以将列从 vchar 更改为 nvchar。然后在向 DB 中插入值时,记得在如下之前添加 N:N'ŁÓDŹ'(在持久性框架中,你应该有某种 NString 表示)

来自文档:

Nvarchar 存储 UNICODE 数据。如果您需要存储 UNICODE 或多语言数据,nvarchar 是您的选择。Varchar 存储 ASCII 数据,应该是您正常使用的数据类型选择。关于内存使用,nvarchar 每个字符使用 2 个字节,而 varchar 使用 1

于 2016-12-22T10:07:27.890 回答