2012-05-04 19 views
1

問題:由PHP保存到MYSQL中的Cyrillic,UTF-8編碼的字符串(例如,「Михаил」)轉換爲不可讀的krakozyabras,如「РњРёС ...айлович」。HTML表單數據> PHP> MySQL UTF編碼(西裏爾字母)

這現在是一個新問題,但到目前爲止我還沒有找到解決方案...如果有人遇到過此問題,請幫助。

HTML頁面是UTF-8編碼,並已正確設置META;保存PHP腳本是UTF-8編碼(帶或不帶BOM - 無關緊要)。 MySL表具有默認編碼utf-8:

CREATE TABLE `cms_deposit_request` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

歡迎任何輸入!謝謝!

回答

1

總是調用

mysql_set_charset('utf8');` 

功能(或您所使用的API類似的功能)連接到數據庫之後

如果沒有這樣的功能,運行

SET NAMES utf8 

SQL查詢在同一個地方

+0

完美的幫助!任何想法爲什麼它不工作?數據庫全局設置?它在另一個應用程序/數據庫服務器上運行良好,無需調用此函數謝謝! –

+0

實際上,您並不需要在數據庫和HTML頁面中使用相同的字符集 - mysql可以即時重新編碼數據。這就是爲什麼你必須指定你需要返回的數據的編碼。默認情況下是latin1 - 所以,連接後你必須經常改變它。這裏是描述這件事的文章(俄語)的鏈接,我相信http://phpfaq.ru/charset –