我在 MYSQL 中有一个表。它被定义为字符集 - utf8,排序规则:utf8_general_ci。 ITEM_TITLE 列定义为 varchar。
我有这个疑问:
更新详细信息设置ITEM_TITLE
="★32GB 超值包★ Sony Xperia miro ST23i 4GB Int 白色配银色"地点TaskID
=109结果是,在 ITEM_TITLE 列中,我的标题不带 ★ 且带有“?”相反。
问题:为了正确地将“★”保存在数据库中,我应该做什么?
**我找到了 SQL Server 的解决方案 - 使用 Nvarchar 而不是 varchar,但 MySQL 中没有这种类型。
答案:我了解问题所在,以及为什么对某人有效的解决方案对我不起作用。 首先,我的数据库的默认字符集是拉丁字符集。所以我将其更改为UTF-8,但并没有解决问题。 原因是我的大部分行都有一个拉丁字符集。我不知道它是自动为 varchar 设置的,即使我将表设置为 UTF-8 也不会改变。所以我将所有内容都更改为 UTF-8 并且它可以修复。
感谢您的帮助!
最佳答案
这应该没有问题。我们来试试吧
mysql> CREATE TABLE details ( -> id int(11) unsigned NOT NULL AUTO_INCREMENT, -> item_title varchar(255) DEFAULT NULL, -> PRIMARY KEY (id) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO details (item_title) VALUES('★32GB VALUE PACK★ Sony Xperia miro ST23i 4GB Int'); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM details; +----+------------------------------------------------------+ | id | item_title | +----+------------------------------------------------------+ | 1 | ★32GB VALUE PACK★ Sony Xperia miro ST23i 4GB Int | +----+------------------------------------------------------+ 1 row in set (0.00 sec)
因此,您很可能在进出数据库的过程中破坏这些字符。
关于php - MySQL DB - 保存特殊字符★,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20935278/