最近找调查投票软件 找到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) [size=3]DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci[/size]");
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">