最近找調查投票軟體 找到limesurvey 和 phpquestionnaire,limesurvey 中文可以用,但是比較煩瑣。phpquestionnaire有漢化過的包下載,但是安裝完,發現中文顯示,建表還是有各種問題,其實也就是apache php mysql的編碼導致的,到網上查了一通,改了改,基本能正常顯示,建表了。把幾個地方總結一下,讓同學少走一些彎路。
1.mysql有庫級編碼,還有表級(列級?)編碼,在windows下最好用utf8.如果是用以前建的庫執行個體,最好看看編碼是什麼。如果折騰了還是不靈,乾脆在建表時指定。
$TableQuery[] = array("phpQAdmin", "CREATE TABLE phpQAdmin (phpQID BIGINT UNSIGNED NOT NULL, Version CHAR(10) NOT NULL, Passwd VARCHAR(20) NOT NULL, Template VARCHAR(50) NOT NULL, Language VARCHAR(50) NOT NULL, AdminLanguage VARCHAR(50) NOT NULL, SummaryLimit INT UNSIGNED NOT NULL DEFAULT 10, TextareaLimit INT UNSIGNED NOT NULL DEFAULT 5, PopupLimit INT UNSIGNED NOT NULL DEFAULT 5, AdvanceInterface ENUM('y','n') NOT NULL DEFAULT 'n', ListSurvey ENUM('y','n') NOT NULL DEFAULT 'y', TimeOut BIGINT UNSIGNED NOT NULL, CookieDomain VARCHAR(255) NOT NULL) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci");
2.mysql還有所謂的用戶端編碼,就是像mysql取資料時,mysql認為應該用什麼編碼返回,比如 apache php取資料時以什麼編碼方式返回,最好也用utf-8。
折騰不清楚,乾脆在mysql串連配置中加上 mysql_query("set names 'utf8'",$conn);
3.這樣改了後,一些檔案要用utf儲存。
4.httpd.conf php.ini 不要指定編碼
5.模板檔案中直接改成<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
這樣顯示,建表都可正常