MySQL DB - 保存特殊字符★

时间:2014-01-05 15:19:39

标签: php mysql

  1. 我在MYSQL中有一个表。它被定义为字符集 - utf8,collat​​ion:utf8_general_ci。 ITEM_TITLE列定义为varchar。

  2. 我有这个问题:
    UPDATE详情SET ITEM_TITLE =“★32GB VALUE PACK★Sony Xperia miro ST23i 4GB Int White with silver”WHERE TaskID = 109

  3. 结果是,在列ITEM_TITLE中我有一个没有★的标题和“?”代替。

  4. 问题:我该怎么做才能在数据库中正确保存“★”?

    **我找到了SQL服务器的解决方案 - 使用Nvarchar而不是varchar,但MySQL中没有这样的类型。

    回答:我明白了问题是什么以及为什么适合某人的解决方案对我不起作用。 首先,我的数据库的默认值是charset latin。所以我把它改成了UTF-8,但它没有解决问题。 原因是我对大多数行都有拉丁语拉丁语。我不知道它是自动设置varchar并且即使我将表设置为UTF-8也不会改变。所以我把所有东西都改成了UTF-8,它可以解决。

    感谢您的帮助!

1 个答案:

答案 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)

因此,您很可能在进/出数据库的路上打破这些字符。