2011-01-25 38 views
1

我正在开发一个母语学习应用程序。我需要将一些字符存储为'ẽũ'。我的数据库设置为UTF-8字符集,默认排序规则,也受此字符影响的表。需要MySQL字符集

问题是,当我尝试使用普通的SQL插入添加一行:

INSERT INTO text(spanish,guarani) VALUES('text','ẽũ'); 

这将引发一个警告:

Warning Code : 1366 Incorrect string value: '\xE1\xBA\xBD\xC5\xA9' for column 'guarani' at row 1 

,其结果是“??”那里有那些角色。

问题:这些字符未涉及的UTF-8字符集?我需要哪一个?

注意:与拉丁-1相同的问题

谢谢。

+0

什么排序规则是在您的连接?你从哪里发送查询? – 2011-01-25 12:00:26

+0

从标准HTML表单发送。连接和通信是通过PHP进行的。 – gustyaquino 2011-01-25 12:04:44

回答

1

QUICK!阅读http://www.joelonsoftware.com/articles/Unicode.html

这是需要阅读。

一旦你已经读了,你应该问自己:

  1. 什么编码是使用的连接。
  2. 使用哪种语言环境进行整理。 (如适用)。
  3. SQL语句在哪些编码?
  4. 什么编码是字符串文字?
  5. html表单提供了什么编码?
0

正如其他的答案,你真的应该阅读和理解的Unicode的基本知识。 这并不难,(在有一天你能抓住它),它所需的知识,几乎每一个程序员(当然你),它的非短暂的知识,将是你的生活变得更加简单和快乐。

这些字符不被 覆盖UTF-8字符集?

UTF-8是一个Unicode字符集,Unicode覆盖(实际上)每个字符。另一方面,MYSQL的'utf8'编码不是真正的UTF-8,它留下了一些字符(在BMP之外)。但这不是你的问题。

http://www.fileformat.info/info/unicode/char/1ebd/index.htm http://www.fileformat.info/info/unicode/char/169/index.htm

你看有你的两个字符是有效的Unicode,是BMP(因此致残的Mysql里面'utf8'应该支持它们),并且yu甚至可以看到它是UTF-8编码。而且,如您所见,\xE1\xBA\xBD\xC5\xA9看起来恰到好处。所以这个问题似乎在别处。你确定你的DB是utf8吗?