Php 在哪里定义MySQL字符集
我将要创建一个包含多语言支持的数据库的项目,所以我决定使用UTF-8编码 但我不确定在哪里定义编码。通过网络浏览,特别是在这个论坛上,我发现了一些提示,但我仍然错过了一些基础知识 可以在多个级别上定义字符集:Php 在哪里定义MySQL字符集,php,mysql,character-encoding,Php,Mysql,Character Encoding,我将要创建一个包含多语言支持的数据库的项目,所以我决定使用UTF-8编码 但我不确定在哪里定义编码。通过网络浏览,特别是在这个论坛上,我发现了一些提示,但我仍然错过了一些基础知识 可以在多个级别上定义字符集: 全操作系统 MySQL范围:在MySQL INI文件和php.INI文件中 对于数据库:在create语句中 对于表:在create语句中 对于列:在create语句中 到mysql的连接:使用--default character set=UTF8开关 我不清楚这个开关到底设置了什么
- 全操作系统
- MySQL范围:在MySQL INI文件和php.INI文件中
- 对于数据库:在create语句中
- 对于表:在create语句中
- 对于列:在create语句中
- 到mysql的连接:使用--default character set=UTF8开关
- 新创建的表的文本列是否受到影响,或者
- 在检索文本数据时是否进行了转换
- 还是别的什么
- 如果在my.ini、现有数据库或现有表中使用默认字符集=UTF8,是否有必要这样做
- 集合字符集
- 设置字符集\u设置\u客户端
- 设置字符集\u设置\u结果
- 设置字符集连接
- 定名
感谢您的澄清。Q1-使用以下命令结束您的连接脚本:mysql\u查询(“设置名称utf8”)
问题2-是的。如果不使用此设置,则可以根据主机(php ini)的设置作为输出,其中可以设置默认字符编码。
Q3-否。表、字段的默认字符集可以有自己的,或者通常使用狭窄的规范(排序的语言差异等)。Q1-使用以下命令结束连接脚本:mysql_query(“SET NAMES utf8”)
问题2-是的。如果不使用此设置,则可以根据主机(php ini)的设置作为输出,其中可以设置默认字符编码。
Q3-否。表、字段的默认字符集可以有自己的,或者通常使用狭窄的规范(排序的语言差异等)。您好,Jirka,谢谢您回答我的问题。我发现,没有必要为每个级别设置字符集和排序规则。一旦为数据库定义了字符集,就会按预期创建表和字段。因此,我将在我的项目中:1。使用utf8字符集2创建数据库。根据需要定义字段或表的排序规则。3.使用mysql_query(“SET NAMES‘utf8’”)确保在数据从数据库4传输到数据库4时不进行任何转换。使用php utf8字符串方法可以做到这一点。@Gisela:您应该接受Jirka的答案,或者将您的评论作为单独的答案发布。让未来的读者更容易找到解决方案。你好,吉尔卡,谢谢你回答我的问题。我发现,没有必要为每个级别设置字符集和排序规则。一旦为数据库定义了字符集,就会按预期创建表和字段。因此,我将在我的项目中:1。使用utf8字符集2创建数据库。根据需要定义字段或表的排序规则。3.使用mysql_query(“SET NAMES‘utf8’”)确保在数据从数据库4传输到数据库4时不进行任何转换。使用php utf8字符串方法可以做到这一点。@Gisela:您应该接受Jirka的答案,或者将您的评论作为单独的答案发布。使未来的读者更容易找到解决方案。
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;