我即将创建一个包含支持多语言的数据库的项目,所以我决定使用UTF-8编码。
但我不知道在哪里定义编码。通过网络浏览,特别是在这个论坛中,我发现了一些提示,但我仍然遗漏了一些基础知识。
有许多级别可以定义字符集:
我不清楚这个开关究竟设置了什么
Q1:我需要澄清一下。
在mysql中,存在很多设置字符集的方法:
Q2:如果数据库字符集或表字符集已正确定义 - 我是否需要上述命令? - 他们是否正在取代上面的启动选项?或者它们是否用于改进开关?
更多问题:
如果在MySQL-INI文件中定义了字符集(如utf8),是否需要使用上述命令和开关之一?
如果没有定义字符集或者utf8以外的字符集(可能我无法控制它),是否足以使用utf8编码创建数据库?并省略create和connect语句中的任何字符集切换?
如果数据库无法定义字符集,是否足以为表设置它,或者我是否必须为每个char / varchar / text字段定义它?
我见过像这样的create table语句(NetBeans示例项目'TodoList'):
CREATE TABLE `todo` (
...
`title` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`comment` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`status` ENUM('PENDING', 'DONE', 'VOIDED') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'PENDING',
...
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
问题6:CHARSET是为表格和文本字段定义的 - 这不是多余的吗?
感谢您的任何澄清。
答案 0 :(得分:0)
Q1 - 使用以下命令结束连接脚本:mysql_query(“SET NAMES utf8”);
Q2 - 是的。如果您不使用此设置,则可以根据托管(php ini)的设置进行输出,其中可以设置默认字符编码。
Q3 - 没有。表的默认字符集,字段可以有自己的或通常是狭窄的规范(排序的语言差异等)。