我的MySQL數據庫可以存儲歐元符號就好(因爲我已經用本地MySQL客戶端(HeidiSQL)測試過)。但是使用MySQL .NET連接器,我的ASP.NET應用程序正在使用我無法插入也沒有從數據庫讀取它:我只得到一個?性格回來。可能的原因是什麼?MySQL ::連接器/淨歐元符號
回答
我建議明確指定您的連接字符串中的編碼:
Server = localhost; Database = schema; Uid = foo; Pwd = bar; CharSet = utf8;
它通常可以解決大多數與MySQL的Connector/NET相關的編碼問題。
對我無效 – akosch 2009-11-06 14:11:31
charset參數僅影響從應用程序發送的查詢;返回結果的字符集不受影響。你確定包含歐元符號的表格的排序是正確的嗎?如果您將歐元符號放入標記爲UTF-8的表格中,表示爲不正確的單字節,則MySQL不會發出抱怨(它不會正確整理)。一個Unicode樸素的客戶端(也許HeidiSQL是?)會檢索該字節並將其錯誤地視爲歐元,但Connector/NET會嘗試並將其視爲UTF-8。 – bobince 2009-11-06 14:29:42
我使用utf8_unicode_ci作爲表 – akosch 2009-11-06 14:37:18
以下.NET命令編碼這些爲你的數據庫,然後將其解碼成原始符號...
System.Web.HttpUtility.HtmlEncode()
System.Web.HttpUtility.HtmlDecode()
存儲HTML-在數據庫中編碼字符串是一個非常糟糕的主意。數據庫級字符串操作(如子字符串和比較)將失敗。而且,HtmlEncode不會對拉丁字母-1範圍之外的Unicode字符進行實體編碼。 – bobince 2009-11-06 14:24:10
您是否正確地在輸出頁面中設置了字符集? 即像<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
或charset=iso-8859-15
但不charset=iso-8859-1
根據iso-8859-1 Unicode€將顯示爲「¬¬」,這絕對不是「?」。 – sanmai 2009-11-13 12:52:00
我想說的是,MySQL .NET連接器上設置連接一些整理相關的環境變量;在HeidiSQL和.NET上比較這些查詢的輸出:
SHOW VARIABLES LIKE "character_set_%";
SHOW VARIABLES LIKE "collation_%";
它們都應該包含utf8-內容。如果沒有,您可以在運行時as in the manual更改它們。
想必您將歐元符號插入到鍵入爲NVARCHAR的字段中,否則您將無法正確插入和檢索其他客戶端的歐元符號?
您是否在SQL語句中使用正確的語法來插入和檢索Unicode數據?
要做到這一點,你必須在任何字符串是unicode之前使用N說明符字符,否則它將默默轉換爲單字節編碼併成爲不可讀字符,例如
//Inserting Unicode data
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "INSERT INTO SOME_TABLE (someField) VALUES (N'@text')";
cmd.Parameters.Add("text", "Some Unicode Text");
cmd.Connection = conn;
cmd.ExecuteNonQuery();
//Selecting Unicode data
MySqlCommand select = new MySqlCommand();
select.CommandText = "SELECT * FROM SOME_TABLE WHERE someField=N'@text'";
cmd.Parameters.Add("text", "Some Unicode Text");
cmd.Connection = conn;
//Execute your query and process your Results...
我有一個類似的問題,試圖從Sybase 12.5數據導入到MS SQL Server 2005的
基本上MSSQL商店英鎊,歐元跡象VARCHAR罰款,如果他們是正確的編碼,這是偉大,但我沒有意識到的是,Sybase輸出的數據是windows-1252(西歐),而不是UTF-8,這導致數據如英鎊和歐元符號被導入程序翻譯爲「?」。告訴導入程序傳入數據編碼爲1252解決了問題。
如果您在閱讀數據庫時將數據庫的輸出編碼爲1252,則應該輸出正確的符號。
例如:
System.Text.Encoding enc = System.Text.Encoing.GetEncoding(1252);
MySqlDataReader msdr = command.ExecuteReader();
while(msdr.Read())
{
...
string val = enc.GetString(enc.GetBytes(msddr.GetString(mssdr.GetOrdinal("varhcar_field"))));
...
}
- 1. 歐元符號
- 2. php preg_replace歐元符號
- 3. 回聲歐元符號
- 4. 不顯示歐元符號
- 5. 歐元符號編碼 - PHP
- 6. 茉莉SMPP歐元符號
- 7. imagettftext和歐元符號
- 8. 歐元符號轉換爲問號
- 9. 將歐元和美元符號插入到mysql的列中
- 10. 用JSTL顯示歐元符號
- 11. 連接器/淨參考
- 12. 如何將歐元符號存儲在mysql數據庫中?
- 13. mysql LOAD DATA INFILE失敗,輸入歐元符號'€'
- 14. 通過顛覆提交€歐元符號
- 15. 歐元符號越獄輸出:?€
- 16. 用pgf/tikz創建歐元符號
- 17. FPDF calibri不顯示歐元符號
- 18. 正則表達式的歐元符號(€)
- 19. 歐元符號的編碼問題
- 20. 在ggplot2中繪製歐元符號€?
- 21. 如何寫歐元(€)符號到Android PDF
- 22. jQuery不識別歐元符號
- 23. Zend_Pdf:歐元符號不顯示
- 24. 歐元符號JNA皈依問題
- 25. rawurldecode不解碼歐元符號
- 26. ggplot中的歐元符號:秤包
- 27. 對MySQL連接設置PAD_CHAR_TO_FULL_LENGTH /淨
- 28. MySQL的淨連接池connection.Open()很慢
- 29. 原子編輯器無意識歐元符號
- 30. 歐元符號在某些機器上出現亂碼
或許已經回答了在這裏太:http://stackoverflow.com/questions/1703636/how-to-store-euro-symbol-in-mysql-database – Gonzalo 2009-11-14 06:13:44