MySql中SET NAMES utf8详解(乱码原理)

本文介绍如何设置MySQL的字符集为UTF8,包括修改my.ini文件和使用SQL命令SET NAMES utf8的方法,确保客户端与服务器之间的数据传输正确无误。


不多说,先上图

分析:

set names utf8之前,

character_set_client    | gbk

character_set_connection| gbk

character_set_results   | gbk

set names utf8之后,

character_set_client    | utf8

character_set_connection| utf8

character_set_results   | utf8

关于字符集可参照mysql中文手册

地址:http://dev.mysql.com/doc/refman/5.1/zh/charset.html#charset-connection

以下是部分摘录:

在客户端和服务器的连接处理中也涉及了字符集和校对规则变量。每一个客户端有一个连接相关的字符集和校对规则变量。

考虑什么是一个连接:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和校对规则的问题,这些问题均能够通过系统变量来解决:

·        当查询离开客户端后,在查询中使用哪种字符集?

服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

·        服务器接收到查询后应该转换为哪种字符集?

转换时,服务器使用character_set_connectioncollation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的校对规则优先级。

·        服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?

character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

你能够调整这些变量的设置,或可以依赖默认值(这样,你可以跳过本章)。

有两个语句影响连接字符集:

SET NAMES 'charset_name'

SET CHARACTERSETcharset_name

SET NAMES 'x'语句与这三个语句等价:

mysql>SETcharacter_set_client =x;

mysql>SETcharacter_set_results =x;

mysql>SETcharacter_set_connection =x;

 

所以说:

set names utf8指定了客户端和服务器之间传递字符的编码规则为UTF8

 

修改MySql默认编码

MySql默认编码是Latin1,不支持中文,要想修改默认编码,需要修改my.ini文件

[client]增加default-character-set=utf8

[mysql]增加default-character-set=utf8

[mysqld]增加

character_set_server=utf8 

init_connect='SET NAMES utf8'





cmd下操作mysql乱码需要注意cmd编码



查看当前代码页,如果当前代码页是GBK那么需要set names GBK才可以保证不乱码。


chcp 65001/936修改代码页。完美解决乱码问题。





基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值