我在MYSQL中有一个表。它被定义为字符集 - utf8,collation:utf8_general_ci。 ITEM_TITLE列定义为varchar。
我有这个问题:
UPDATE详情SET ITEM_TITLE
=“★32GB VALUE PACK★Sony Xperia miro ST23i 4GB Int White with silver”WHERE TaskID
= 109
结果是,在列ITEM_TITLE中我有一个没有★的标题和“?”代替。
问题:我该怎么做才能在数据库中正确保存“★”?
**我找到了SQL服务器的解决方案 - 使用Nvarchar而不是varchar,但MySQL中没有这样的类型。
回答:我明白了问题是什么以及为什么适合某人的解决方案对我不起作用。 首先,我的数据库的默认值是charset latin。所以我把它改成了UTF-8,但它没有解决问题。 原因是我对大多数行都有拉丁语拉丁语。我不知道它是自动设置varchar并且即使我将表设置为UTF-8也不会改变。所以我把所有东西都改成了UTF-8,它可以解决。
感谢您的帮助!
答案 0 :(得分:0)
应该没有问题。我们来试试吧
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)
因此,您很可能在进/出数据库的路上打破这些字符。