关于怎样保证数据库字符编码正确的简介
发布日期:2015-11-9 13:11:55
关于怎样保证数据库字符编码正确的简介 在数据库设计的过程中需要详细考虑的一点是数据库中的字符集,您需要根据您的业务场景,用户数据等方面来考虑。 下图是在数据库中设置字符集的参数的参考。 通过show variables like '%character%'来查找这些参数,在以下的各参数必须需要保证除了character_set_filesystem外的所有的参数都保持统一才可以保证字符编码不会出现乱码的情况。 character_set_client、character_set_results 以及character_set_connection这几个参数都是客户端的设置 character_set_server、character_set_system以及character_set_database是指服务器端的设置。 而对于这三个服务器端的参数来说的优先级是character_set_system<character_set_server<character_set_database的;另外列的字符编码在服务器端是具有最高优先级的。 那怎样可以保证我们的这些字段是一致的。首先对于客户端字符集来说可以通过set names XXX来定义对应的character_set_client、character_set_connection以及character_set_results这几个参数 例如set names utf8即可。 可以有不同的层次对于服务器端的设置,首先对于character_set_system暂时不提供更改,它影响不大因为其优先级最低。接下来character_set_server您可以在控制台上的参数设置里面的character_set_server参数来设置,详细界面请参考下面的截图。 而对于character_set_database则是在数据库创建的时候指定的,请参考下图。对于mysql可以通过ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 类似的方式来设置。暂时不支持修改Sqlserver的字符集。最高优先级的列的字符集也可以通过ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 来更改。 基本上可以保证字符编码不会出现乱码如果能做到上述的设置,我们对于在代码中设置客户端的字符编码的时候给出的建议是可以通过set names XXX来修改客户端的设置。然后在进行相关的操作。 如果问题还未能解决,请联系售后技术支持。
|