2011-01-25 40 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嗎?