[英]Storing Special Characters in MySQL (Android, PHP involved too)
好的,我正在嘗試將數據存儲在Android應用程序的MySQL數據庫中。 我使用PHP作為介於兩者之間。
我提交給數據庫的是這個(例如):Sakè
存儲在MySQL中的是:Sakè
當我在Android中打印出該行時,它知道要轉換回:Sakè
問題是,當我做某些選擇語句時,是的,它基本上不會像它應該的那樣工作。 有什么方法可以保持這種一致性嗎?
只是MySQL中的一個注釋:我使用utf8_general_ci
您需要為PHP腳本強制實施數據庫連接的正確字符。 最簡單的方法是執行此查詢:
SET NAMES 'utf8';
只需一次,最好在你connect()
。 如果您使用Zend Framework,只需添加:
resources.db.params.charset = UTF8
到您的application.ini。 對於mysqli,請參閱set_charset() 。 如果您使用其他任何內容,請檢查文檔中的類似內容。 如果沒有,那么SET NAMES
技巧將永遠有效。
但是一個重要的注意事項 - 根據您將數據放入數據庫的方式,您的數據庫內容很可能需要修復,因為它在INSERT
期間被破壞的字符集損壞。 因此,即使你現在做了SET NAMES
,你很可能仍然看到錯誤的舊數據。 但具有諷刺意味的是,好的 - 你現在表現得很好,但數據本身就被打破了。 您現在需要修復數據(只需重新插入)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.