我想插入一些简单的数据
查询是:
INSERT INTO categories_lang
(category_id,language_id,name,description,alias)VALUES(7,'nl','éésgdsfgsdfgdfsgë','','')
查询是正确的
当我插入普通字符(没有像ë和é这样的法国东西)时它会起作用。
但是当我这样做时,查询会在表格中插入一个空的描述字段。
当我在heidsql中运行查询时,它确实有效。
这里有什么不妥?
由于
答案 0 :(得分:2)
在执行查询之前,请将此信息发送到服务器:
SET NAMES utf8
注意,这正是'utf8',而不是'utf-8'。
如果你想在将来避免相关的问题,我建议你每次连接到mysql后都做SET NAMES utf8
- 它会为你节省很多痛苦。
答案 1 :(得分:2)
MySQL的默认字符集 客户端程序mysql,mysqladmin, mysqlcheck,mysqlimport和mysqlshow 确定如下:
- 在没有其他信息的情况下,程序会使用 编译的默认字符集, 通常 latin1 。
- 这些程序支持
--default-character-set option
, 这使用户能够指定 明确要覆盖的字符集 无论客户端默认如何 确定。当客户端连接到服务器时, 它发送字符集的名称 它想要使用。服务器使用 要设置的名称
character_set_client
,character_set_results
,和character_set_connection
系统 变量。实际上,服务器 使用执行SET NAMES
操作 字符集名称。使用mysql客户端,如果你想 使用不同于的字符集 默认情况下,您可以显式执行 每次启动时
SET NAMES
。 但是,要达到同样的效果 更容易,你可以添加--default-character-set
选项 设置为您的mysql命令行或 在您的选项文件中。例如, 以下选项文件设置更改 三个与连接相关的角色 每次设置变量设置为koi8r 你调用mysql:[mysql] default-character-set=koi8r
如果您正在使用mysql客户端 启用自动重新连接(不是 推荐),最好使用 charset命令而不是
SET NAMES
。例如:mysql> charset utf8 Charset changed
charset命令发出
SET NAMES
语句,并且还会更改 mysql使用的默认字符集 当它重新连接后 连接已经下降。