<p>&nbsp;</p> <p>&nbsp;</p> <h3 data-source-line="4">utf8的锅:</h3> <p data-source-line="6">场景&nbsp;: 之前在给客户做微商城时,需要保存微信的授权信息,此时就有一个nickname字段,在设计数据表时,潜意识的将表的存储格式设置为utf8,生产上线一段时间后偶尔出现保存异常。经分析,出现异常的原因是:用户nickname中有email表情符号。utf8格式的数据表存储不下导致。</p> <p data-source-line="8">经验提示: 在设计数据表时,一定要注意该字段存储的内容,<span style="color: rgba(255, 0, 0, 1)"><strong>如果允许设置表情emoj,则一定不能使用utf8,而是使用utf8mb4</strong></span>。</p> <p data-source-line="8">&nbsp;</p> <p>&nbsp;</p> <div class="cnblogs_code"> <pre><span style="color: rgba(0, 0, 255, 1)">alter</span> <span style="color: rgba(0, 0, 255, 1)">database</span> apple <span style="color: rgba(0, 0, 255, 1)">default</span> <span style="color: rgba(0, 0, 255, 1)">character</span> <span style="color: rgba(0, 0, 255, 1)">set</span> <span style="color: rgba(128, 128, 128, 1)">=</span> <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">utf8mb4</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;<br> </span><span style="color: rgba(0, 0, 255, 1)">alter</span> <span style="color: rgba(0, 0, 255, 1)">table</span> iphone <span style="color: rgba(255, 0, 255, 1)">convert</span> <span style="color: rgba(0, 0, 255, 1)">to</span> <span style="color: rgba(0, 0, 255, 1)">character</span> <span style="color: rgba(0, 0, 255, 1)">set</span> utf8mb4;<br><br><br></pre> </div> <p>&nbsp;</p> <p>&nbsp;</p> <div class="cnblogs_code"> <pre><span style="color: rgba(0, 0, 0, 1)"># 字符集字符序问题: </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>server<span style="color: rgba(128, 128, 128, 1)">/</span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">:服务器字符集,默认情况下所采用的。<br> </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">database</span><span style="color: rgba(0, 0, 0, 1)">:数据库字符集。<br> </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">table</span><span style="color: rgba(0, 0, 0, 1)">:数据库表字符集。<br> # 优先级依次增加。所以一般情况下只需要设置character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>server,而在创建数据库和表时不特别指定字符集,这样统一采用character<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">server字符集。<br> </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。<br> </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。<br> 在客户端,如果没有定义character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>results,则采用character<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>client字符集作为默认的字符集。所以只需要设置character<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 0, 1)">client字符集。 最佳方案:<br> server字符集</span><span style="color: rgba(128, 128, 128, 1)">=</span>数据库字符集<span style="color: rgba(128, 128, 128, 1)">=</span>表字符集<span style="color: rgba(128, 128, 128, 1)">=</span>会话字符集<span style="color: rgba(128, 128, 128, 1)">=</span>客户端显示字符集</pre> </div> <p>&nbsp;</p> <p>MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即&nbsp;most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。</p> <p>而utf8 是 utf8mb3 的别名。标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,但是MySQL其实实现的utf8只是使用3个字节而已,&nbsp;<code>utf8mb4才是真正意义上的 utf8</code>。</p> <p>如果数据库表字段设置的字符集不是utf8mb4,却插入类似emjoy表情的时候:</p> <ul> <li>严格模式 下会出现 Incorrect string value: /xF0/xA1/x8B/xBE/xE5/xA2… for column 'name' 这样的错误</li> <li>非严格模式下此后的数据会被截断</li> </ul> <hr> <h2>排序字符集</h2> <p><strong>Refer to</strong>:&nbsp;<a href="https://link.jianshu.com/?t=https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.6%2Fen%2Fcharset-collation-names.html" rel="nofollow" target="_blank">Collation Naming Conventions</a></p> <table> <thead> <tr> <th>Suffix</th> <th>Meaning</th> <th>Remark</th> </tr> </thead> <tbody> <tr> <td>_ai</td> <td>Accent insensitive</td> <td>&nbsp;</td> </tr> <tr> <td>_as</td> <td>Accent sensitive</td> <td>&nbsp;</td> </tr> <tr> <td>_ci</td> <td>Case insensitive</td> <td>不分区大小写</td> </tr> <tr> <td>_cs</td> <td>case-sensitive</td> <td>区分大小写</td> </tr> <tr> <td>_bin</td> <td>Binary</td> <td>二进制存储,区分大小写</td> </tr> </tbody> </table> <h3>utf8mb4_ unicode_ ci VS utf8mb4_ general_ ci</h3> <p><strong>Refer to</strong>:&nbsp;<a href="https://link.jianshu.com/?t=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F766809%2Fwhats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci" rel="nofollow" target="_blank">What's the difference between utf8_general_ci and utf8_unicode_ci<br></a></p> <ul> <li>utf8_general_ci校对速度快,但准确度稍差。</li> <li>utf8_unicode_ci准确度高,但校对速度稍慢。</li> </ul> <p>数据库一般默认选择&nbsp;<code>utf8mb4_general_ci</code>&nbsp;;<br>如果你的应用有德语、法语或者俄语,请一定使用<code>utf8mb4_unicode_ci</code></p> <h2>配置</h2> <pre class="hljs php"><code class="php hljs">vim /etc/my.cnf</code></pre> <div class="cnblogs_code"> <pre><span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">client</span><span style="color: rgba(255, 0, 0, 1)">]</span> <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span> <span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> utf8mb4 </span><span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">mysql</span><span style="color: rgba(255, 0, 0, 1)">]</span> <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span> <span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> utf8mb4 </span><span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">mysqld</span><span style="color: rgba(255, 0, 0, 1)">]</span><span style="color: rgba(0, 0, 0, 1)"> # </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>client<span style="color: rgba(128, 128, 128, 1)">-</span>handshake <span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> FALSE <br> </span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">-</span>server <span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> utf8mb4 <br> collation</span><span style="color: rgba(128, 128, 128, 1)">-</span>server <span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> utf8mb4_general_ci <br> init_connect</span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">SET NAMES utf8mb4</span><span style="color: rgba(255, 0, 0, 1)">'</span></pre> </div> <p>&nbsp;</p> <h2>检查目前MySQL的字符集</h2> <div class="cnblogs_code"> <pre><span style="color: rgba(0, 128, 0, 1)">tj1</span><span style="color: rgba(128, 128, 128, 1)">-</span>using<span style="color: rgba(128, 128, 128, 1)">-</span>glc<span style="color: rgba(128, 128, 128, 1)">-</span>db01.kscn((none)) <span style="color: rgba(128, 128, 128, 1)">&gt;</span> SHOW VARIABLES <span style="color: rgba(0, 0, 255, 1)">WHERE</span> Variable_name <span style="color: rgba(128, 128, 128, 1)">LIKE</span> <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">character\_set\_%</span><span style="color: rgba(255, 0, 0, 1)">'</span> <span style="color: rgba(128, 128, 128, 1)">OR</span> Variable_name <span style="color: rgba(128, 128, 128, 1)">LIKE</span> <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">collation%</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">------------------------+--------------------+</span> <span style="color: rgba(128, 128, 128, 1)">|</span> Variable_name <span style="color: rgba(128, 128, 128, 1)">|</span> Value <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">------------------------+--------------------+</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_client <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_connection <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_database <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_filesystem <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">binary</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_results <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_server <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> character_set_system <span style="color: rgba(128, 128, 128, 1)">|</span> utf8 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> collation_connection <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> collation_database <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> collation_server <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">------------------------+--------------------+</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">10</span> rows <span style="color: rgba(128, 128, 128, 1)">in</span> <span style="color: rgba(0, 0, 255, 1)">set</span> (<span style="color: rgba(128, 0, 0, 1); font-weight: bold">0.01</span><span style="color: rgba(0, 0, 0, 1)"> sec) Fri Aug </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">28</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">17</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">51</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">07</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2020</span></pre> </div> <p>&nbsp;</p> <h2>总结</h2> <ul> <li>mysql 版本 5.5.3+</li> <li>MySQL Connector/J Java驱动5.1.13+</li> <li>/etc/my.cnf 配置中 添加配置,详见上面</li> <li>排序字符集选用 utf8mb4_unicode_ci</li> <li>列(字段)&gt; 表 &gt; 数据库</li> </ul> <p>备注:<br>其实只要数据库支持utfbmb4(show char set),及时MySQL配置(/etc/my.cnf)中配置的默认字符集是utf8,也可以直接指定数据库、表、字段的字符集为utf8mb4,然后在连接的时候指定字符集为utf8mb4即可。<br>比如设置Java的连接参数中<code>characterEncoding=utf8mb4</code></p> <p>查看MySQL支持的字符集列表:</p> <div> <div class="cnblogs_code"> <pre>tj1<span style="color: rgba(128, 128, 128, 1)">-</span>using<span style="color: rgba(128, 128, 128, 1)">-</span>glc<span style="color: rgba(128, 128, 128, 1)">-</span>db01.kscn((none)) <span style="color: rgba(128, 128, 128, 1)">&gt;</span> show <span style="color: rgba(0, 0, 255, 1)">char</span> <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">--------+---------------------------------+---------------------+--------+</span> <span style="color: rgba(128, 128, 128, 1)">|</span> Charset <span style="color: rgba(128, 128, 128, 1)">|</span> Description <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">Default</span> collation <span style="color: rgba(128, 128, 128, 1)">|</span> Maxlen <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">--------+---------------------------------+---------------------+--------+</span> <span style="color: rgba(128, 128, 128, 1)">|</span> big5 <span style="color: rgba(128, 128, 128, 1)">|</span> Big5 Traditional Chinese <span style="color: rgba(128, 128, 128, 1)">|</span> big5_chinese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> dec8 <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">DEC</span> West European <span style="color: rgba(128, 128, 128, 1)">|</span> dec8_swedish_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp850 <span style="color: rgba(128, 128, 128, 1)">|</span> DOS West European <span style="color: rgba(128, 128, 128, 1)">|</span> cp850_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> hp8 <span style="color: rgba(128, 128, 128, 1)">|</span> HP West European <span style="color: rgba(128, 128, 128, 1)">|</span> hp8_english_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> koi8r <span style="color: rgba(128, 128, 128, 1)">|</span> KOI8<span style="color: rgba(128, 128, 128, 1)">-</span>R Relcom Russian <span style="color: rgba(128, 128, 128, 1)">|</span> koi8r_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> latin1 <span style="color: rgba(128, 128, 128, 1)">|</span> cp1252 West European <span style="color: rgba(128, 128, 128, 1)">|</span> latin1_swedish_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> latin2 <span style="color: rgba(128, 128, 128, 1)">|</span> ISO <span style="color: rgba(128, 0, 0, 1); font-weight: bold">8859</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> Central European <span style="color: rgba(128, 128, 128, 1)">|</span> latin2_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> swe7 <span style="color: rgba(128, 128, 128, 1)">|</span> 7<span style="color: rgba(0, 0, 255, 1)">bit</span> Swedish <span style="color: rgba(128, 128, 128, 1)">|</span> swe7_swedish_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(255, 0, 255, 1)">ascii</span> <span style="color: rgba(128, 128, 128, 1)">|</span> US <span style="color: rgba(255, 0, 255, 1)">ASCII</span> <span style="color: rgba(128, 128, 128, 1)">|</span> ascii_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> ujis <span style="color: rgba(128, 128, 128, 1)">|</span> EUC<span style="color: rgba(128, 128, 128, 1)">-</span>JP Japanese <span style="color: rgba(128, 128, 128, 1)">|</span> ujis_japanese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">3</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> sjis <span style="color: rgba(128, 128, 128, 1)">|</span> Shift<span style="color: rgba(128, 128, 128, 1)">-</span>JIS Japanese <span style="color: rgba(128, 128, 128, 1)">|</span> sjis_japanese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> hebrew <span style="color: rgba(128, 128, 128, 1)">|</span> ISO <span style="color: rgba(128, 0, 0, 1); font-weight: bold">8859</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">8</span> Hebrew <span style="color: rgba(128, 128, 128, 1)">|</span> hebrew_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> tis620 <span style="color: rgba(128, 128, 128, 1)">|</span> TIS620 Thai <span style="color: rgba(128, 128, 128, 1)">|</span> tis620_thai_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> euckr <span style="color: rgba(128, 128, 128, 1)">|</span> EUC<span style="color: rgba(128, 128, 128, 1)">-</span>KR Korean <span style="color: rgba(128, 128, 128, 1)">|</span> euckr_korean_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> koi8u <span style="color: rgba(128, 128, 128, 1)">|</span> KOI8<span style="color: rgba(128, 128, 128, 1)">-</span>U Ukrainian <span style="color: rgba(128, 128, 128, 1)">|</span> koi8u_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> gb2312 <span style="color: rgba(128, 128, 128, 1)">|</span> GB2312 Simplified Chinese <span style="color: rgba(128, 128, 128, 1)">|</span> gb2312_chinese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> greek <span style="color: rgba(128, 128, 128, 1)">|</span> ISO <span style="color: rgba(128, 0, 0, 1); font-weight: bold">8859</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">7</span> Greek <span style="color: rgba(128, 128, 128, 1)">|</span> greek_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp1250 <span style="color: rgba(128, 128, 128, 1)">|</span> Windows Central European <span style="color: rgba(128, 128, 128, 1)">|</span> cp1250_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> gbk <span style="color: rgba(128, 128, 128, 1)">|</span> GBK Simplified Chinese <span style="color: rgba(128, 128, 128, 1)">|</span> gbk_chinese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> latin5 <span style="color: rgba(128, 128, 128, 1)">|</span> ISO <span style="color: rgba(128, 0, 0, 1); font-weight: bold">8859</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">9</span> Turkish <span style="color: rgba(128, 128, 128, 1)">|</span> latin5_turkish_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> armscii8 <span style="color: rgba(128, 128, 128, 1)">|</span> ARMSCII<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">8</span> Armenian <span style="color: rgba(128, 128, 128, 1)">|</span> armscii8_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf8 <span style="color: rgba(128, 128, 128, 1)">|</span> UTF<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">8</span> <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf8_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">3</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> ucs2 <span style="color: rgba(128, 128, 128, 1)">|</span> UCS<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> ucs2_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp866 <span style="color: rgba(128, 128, 128, 1)">|</span> DOS Russian <span style="color: rgba(128, 128, 128, 1)">|</span> cp866_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> keybcs2 <span style="color: rgba(128, 128, 128, 1)">|</span> DOS Kamenicky Czech<span style="color: rgba(128, 128, 128, 1)">-</span>Slovak <span style="color: rgba(128, 128, 128, 1)">|</span> keybcs2_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> macce <span style="color: rgba(128, 128, 128, 1)">|</span> Mac Central European <span style="color: rgba(128, 128, 128, 1)">|</span> macce_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> macroman <span style="color: rgba(128, 128, 128, 1)">|</span> Mac West European <span style="color: rgba(128, 128, 128, 1)">|</span> macroman_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp852 <span style="color: rgba(128, 128, 128, 1)">|</span> DOS Central European <span style="color: rgba(128, 128, 128, 1)">|</span> cp852_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> latin7 <span style="color: rgba(128, 128, 128, 1)">|</span> ISO <span style="color: rgba(128, 0, 0, 1); font-weight: bold">8859</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">13</span> Baltic <span style="color: rgba(128, 128, 128, 1)">|</span> latin7_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4 <span style="color: rgba(128, 128, 128, 1)">|</span> UTF<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">8</span> <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf8mb4_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp1251 <span style="color: rgba(128, 128, 128, 1)">|</span> Windows Cyrillic <span style="color: rgba(128, 128, 128, 1)">|</span> cp1251_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf16 <span style="color: rgba(128, 128, 128, 1)">|</span> UTF<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">16</span> <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf16_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf16le <span style="color: rgba(128, 128, 128, 1)">|</span> UTF<span style="color: rgba(128, 128, 128, 1)">-</span>16LE <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf16le_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp1256 <span style="color: rgba(128, 128, 128, 1)">|</span> Windows Arabic <span style="color: rgba(128, 128, 128, 1)">|</span> cp1256_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp1257 <span style="color: rgba(128, 128, 128, 1)">|</span> Windows Baltic <span style="color: rgba(128, 128, 128, 1)">|</span> cp1257_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf32 <span style="color: rgba(128, 128, 128, 1)">|</span> UTF<span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">32</span> <span style="color: rgba(255, 0, 255, 1)">Unicode</span> <span style="color: rgba(128, 128, 128, 1)">|</span> utf32_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">binary</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">Binary</span> pseudo charset <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(0, 0, 255, 1)">binary</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> geostd8 <span style="color: rgba(128, 128, 128, 1)">|</span> GEOSTD8 Georgian <span style="color: rgba(128, 128, 128, 1)">|</span> geostd8_general_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> cp932 <span style="color: rgba(128, 128, 128, 1)">|</span> SJIS <span style="color: rgba(0, 0, 255, 1)">for</span> Windows Japanese <span style="color: rgba(128, 128, 128, 1)">|</span> cp932_japanese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> eucjpms <span style="color: rgba(128, 128, 128, 1)">|</span> UJIS <span style="color: rgba(0, 0, 255, 1)">for</span> Windows Japanese <span style="color: rgba(128, 128, 128, 1)">|</span> eucjpms_japanese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">3</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">|</span> gb18030 <span style="color: rgba(128, 128, 128, 1)">|</span> China <span style="color: rgba(0, 0, 255, 1)">National</span> Standard GB18030 <span style="color: rgba(128, 128, 128, 1)">|</span> gb18030_chinese_ci <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">4</span> <span style="color: rgba(128, 128, 128, 1)">|</span> <span style="color: rgba(128, 128, 128, 1)">+</span><span style="color: rgba(0, 128, 128, 1)">--</span><span style="color: rgba(0, 128, 128, 1)">--------+---------------------------------+---------------------+--------+</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">41</span> rows <span style="color: rgba(128, 128, 128, 1)">in</span> <span style="color: rgba(0, 0, 255, 1)">set</span> (<span style="color: rgba(128, 0, 0, 1); font-weight: bold">0.01</span><span style="color: rgba(0, 0, 0, 1)"> sec) Fri Aug </span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">28</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">17</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">50</span>:<span style="color: rgba(128, 0, 0, 1); font-weight: bold">06</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">2020</span></pre> </div> <p>&nbsp;</p> </div> <div class="image-package"> &nbsp; </div> <h3>建议</h3> <p>数据库在设置字符集的时候,设置成<code>utf8mb4</code>格式!</p> <p>&nbsp;</p> <h3>字符集转化</h3> <p>&nbsp;###########################################################################</p> <p>&nbsp;</p> <p class="listitem"><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_server"><code class="literal">character_set_server</code></a>&nbsp;<br><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_server"><code class="literal">collation_server</code></a><br><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_database"><code class="literal">character_set_database</code></a><br><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_database"><code class="literal">collation_database</code></a></p> <p class="listitem">&nbsp;</p> <p class="listitem"><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client<br></code></a><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_results"><code class="literal">character_set_results</code></a></p> <p class="listitem"><br><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_connection"><code class="literal">character_set_connection</code></a>&nbsp;&lt;===<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client</code></a><br><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_connection"><code class="literal">collation_connection</code></a></p> <p class="listitem">&nbsp;</p> <p class="listitem">skip-character-set-client-handshake</p> <p class="listitem">&nbsp;</p> <p class="listitem">&nbsp;<strong>client (character_set_client) -----&gt; character_set_connection -------&gt; mysqld &nbsp;------&gt; client(character_set_results)</strong></p> <p class="listitem">&nbsp;</p> <p>存在三次编码转换过程:</p> <p>1)mysql client 使用 character_set_client编码的字符------&gt; character_set_connection 编码字符</p> <p>&nbsp; &nbsp; ------&gt; mysqld :这里需要从 character_set_connection 编码格式二进制流<strong>解码成 字符</strong>,然后使用 character_set_server/character_set_database&nbsp;<strong>对字符进行再次编码</strong>,生成二进制流,存储时,就是存储再次编码的二进制流数据。</p> <p>2)读取数据时,会使用&nbsp;character_set_server/character_set_database 对读取到的二级制流进行 解码成 字符,然后使用 character_set_results 对字符进行二次编码,生成二进制流,发给 mysql client.</p> <p>所以 使用 set names 'xxx' 命令,结合 character_set_server 参数,可以将 整个过程的 字符集设置成相同的,就不会存在编码转换的过程。</p> <p>&nbsp;</p> <p class="listitem">&nbsp;1.-</p> <ul class="itemizedlist"> <li class="listitem"> <p>系统变量:<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_server"><code class="literal">character_set_server</code></a>&nbsp;and&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_server"><code class="literal">collation_server</code></a>&nbsp;  指示 server character set and collation</p> </li> <li class="listitem"> <p>系统变量:<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_database"><code class="literal">character_set_database</code></a>&nbsp;and&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_database"><code class="literal">collation_database</code></a>&nbsp;指示默认数据库的 character set and collation&nbsp;</p> </li> </ul> <p>&nbsp;2.-</p> <p>  在处理客户端和服务器之间的连接的流量时涉及附加的字符集和校对系统变量。</p> <p>  每个客户端都有特定于会话的连接相关字符集和校对系统变量。</p> <p>  这些会话系统变量值在连接时初始化,但可以在会话中更改。</p> <ul> <li>服务器将&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client</code></a>系统变量作为客户端发送语句的字符集。</li> <li> <p>该<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client</code></a>系统变量不能设置为特定字符集:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-simple"><code class=" language-simple">ucs2 utf16 utf16le utf32</code></pre> </div> </li> </ul> <p>&nbsp;3.-</p> <ul> <li>服务器收到语句后应该将语句翻译成什么字符集?</li> </ul> <p>    要确定这一点,服务器使用&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_connection"><code class="literal">character_set_connection</code></a>&nbsp;和<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_connection"><code class="literal">collation_connection</code></a>&nbsp;系统变量:</p> <div class="itemizedlist"> <ul class="itemizedlist"> <li class="listitem"> <p><em><strong>服务器将客户端发送的语句转换&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client</code></a>为&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_connection"><code class="literal">character_set_connection</code></a>。</strong></em></p> </li> <li class="listitem"> <p><a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_connection"><code class="literal">collation_connection</code></a>对于文字字符串的比较很重要。对于字符串与列值的比较,<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_connection"><code class="literal">collation_connection</code></a>&nbsp;无关紧要,因为列具有自己的排序规则,排序优先级更高。</p> </li> </ul> <p>&nbsp;4.-</p> <ul> <li>在将查询结果发送回客户端之前,服务器应该将哪些字符集转换为结果?</li> </ul> <p>  <a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_results"><code class="literal">character_set_results</code></a>&nbsp;系统变量指示在其中服务器查询结果返回到客户端的字符集。这包括结果数据,如列值,结果元数据(如列名称)和错误消息。</p> <p>  要告诉服务器不执行结果集或错误消息的转换,请设置&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_results"><code class="literal">character_set_results</code></a>为&nbsp;<code class="literal">NULL</code>或<code class="literal">binary</code>:</p> <p>&nbsp;</p> <p>&nbsp;5.-</p> <ul> <li>要查看适用于当前会话的字符集和排序规则系统变量的值,请使用以下语句:</li> </ul> <div class="copytoclipboard-wrapper"> <div id="sa25265724" class="docs-select-all right"> <div class="cnblogs_code"> <pre> <span style="color: rgba(0, 0, 255, 1)">SELECT</span> <span style="color: rgba(128, 128, 128, 1)">*</span> <span style="color: rgba(0, 0, 255, 1)">FROM</span><span style="color: rgba(0, 0, 0, 1)"> performance_schema.session_variables </span><span style="color: rgba(0, 0, 255, 1)">WHERE</span> VARIABLE_NAME <span style="color: rgba(128, 128, 128, 1)">IN</span><span style="color: rgba(0, 0, 0, 1)"> ( </span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">character_set_client</span><span style="color: rgba(255, 0, 0, 1)">'</span>, <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">character_set_connection</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, </span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">character_set_results</span><span style="color: rgba(255, 0, 0, 1)">'</span>, <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">collation_connection</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> ) </span><span style="color: rgba(0, 0, 255, 1)">ORDER</span> <span style="color: rgba(0, 0, 255, 1)">BY</span> VARIABLE_NAME;</pre> </div> <p>&nbsp;</p> </div> </div> <p>&nbsp;</p> <p>6.-</p> </div> <ul class="itemizedlist"> <li class="listitem"> <p>C应用程序可以<a class="link" title="28.7.7.50 mysql_options()" href="https://dev.mysql.com/doc/refman/8.0/en/mysql-options.html"><code class="literal">mysql_options()</code></a>在连接到服务器之前通过以下方式调用,根据操作系统设置使用字符集自动检测&nbsp;:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-c"><code class="language-c hljs cpp"><span class="token function">mysql_options<span class="token punctuation">(mysql<span class="token punctuation">, MYSQL_SET_CHARSET_NAME<span class="token punctuation">, MYSQL_AUTODETECT_CHARSET_NAME<span class="token punctuation">)<span class="token punctuation">;</span></span></span></span></span></span></code></pre> </div> </li> <li class="listitem"> <p>每个客户端都支持一个&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_default-character-set"><code class="option">--default-character-set</code></a>&nbsp;选项,该选项允许用户显式指定字符集以覆盖客户端否则确定的任何默认值。</p> </li> </ul> <p>&nbsp;</p> <p>&nbsp;7.-</p> <ul> <li>使用<a class="link" title="4.5.1 mysql - MySQL命令行客户端" href="https://dev.mysql.com/doc/refman/8.0/en/mysql.html"><span class="command"><strong>mysql</strong></span></a>客户端,要使用与默认值不同的字符集,<a class="link" title="13.7.5.3 SET NAMES语法" href="https://dev.mysql.com/doc/refman/8.0/en/set-names.html"><code class="literal">SET NAMES</code></a>每次连接到服务器时都可以显式执行&nbsp;语句(请参阅<a class="xref" title="客户端程序连接字符集配置" href="https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset-connection-client-configuration">客户端程序连接字符集配置</a>)。要更轻松地完成相同的结果,请在选项文件中指定字符集。例如,以下选项文件设置更改<code class="literal">koi8r</code>每次调用<a class="link" title="4.5.1 mysql - MySQL命令行客户端" href="https://dev.mysql.com/doc/refman/8.0/en/mysql.html"><span class="command"><strong>mysql</strong></span></a>时设置的三个与连接相关的字符集系统变量:</li> </ul> <div class="copytoclipboard-wrapper"> &nbsp; <pre class="programlisting line-numbers language-ini"><code class="language-ini hljs"><span class="token selector"><span class="hljs-section"> </span></span></code></pre> <div class="cnblogs_code"> <pre>   <span style="color: rgba(255, 0, 0, 1)">[</span><span style="color: rgba(255, 0, 0, 1)">mysql</span><span style="color: rgba(255, 0, 0, 1)">]</span>     <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">character</span><span style="color: rgba(128, 128, 128, 1)">-</span><span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(128, 128, 128, 1)">=</span>koi8r</pre> </div> <p>&nbsp;</p> <pre class="programlisting line-numbers language-ini"><code class="language-ini hljs"><span class="token selector"><span class="hljs-section"><span class="token constant"><span class="token attr-value"><span class="token punctuation"><br><br>8.-<br></span></span></span></span></span></code></pre> <ul> <li>如果您正在使用启用了自动重新连接的<a class="link" title="4.5.1 mysql - MySQL命令行客户端" href="https://dev.mysql.com/doc/refman/8.0/en/mysql.html"><span class="command"><strong>mysql</strong></span></a>客户端(<strong>不建议这样做)</strong>,则最好使用<code class="literal">charset</code>命令而不是<a class="link" title="13.7.5.3 SET NAMES语法" href="https://dev.mysql.com/doc/refman/8.0/en/set-names.html"><code class="literal">SET NAMES</code></a>。例如:</li> </ul> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-sql"><code class="language-sql hljs"><span class="token prompt">  mysql&gt; <span class="token keyword">charset koi8r   <span class="token keyword">Charset <span class="token keyword">changed</span></span></span></span></code></pre> </div> <p><strong>    该<code class="literal">charset</code>命令发出一个&nbsp;<a class="link" title="13.7.5.3 SET NAMES语法" href="https://dev.mysql.com/doc/refman/8.0/en/set-names.html"><code class="literal">SET NAMES</code></a>语句,并且还更改<a class="link" title="4.5.1 mysql - MySQL命令行客户端" href="https://dev.mysql.com/doc/refman/8.0/en/mysql.html"><span class="command">mysql</span></a>&nbsp;在连接断开后重新连接时使用的默认字符集。</strong></p> <p>    配置客户端程序时,还必须考虑它们执行的环境。请参见&nbsp;<a class="xref" title="10.5配置应用程序字符集和排序规则" href="https://dev.mysql.com/doc/refman/8.0/en/charset-applications.html">第10.5节“配置应用程序字符集和排序规则”</a>。</p> <p>&nbsp;9.-</p> <ul> <li>&nbsp;<a class="link" title="13.7.5.3 SET NAMES语法" href="https://dev.mysql.com/doc/refman/8.0/en/set-names.html"><code class="literal">SET NAMES '<em class="replaceable"><code>charset_name</code></em>'</code></a>一个&nbsp;语句相当于这三个语句:</li> </ul> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-sql"><code class="language-sql hljs"><span class="token keyword">    <span class="hljs-keyword">SET character_set_client <span class="token operator">= <em class="replaceable">charset_name</em><span class="token punctuation">;     <span class="token keyword"><span class="hljs-keyword">SET character_set_results <span class="token operator">= <em class="replaceable">charset_name</em><span class="token punctuation">;     <span class="token keyword"><span class="hljs-keyword">SET character_set_connection <span class="token operator">= <em class="replaceable">charset_name</em><span class="token punctuation">;<br><br></span></span></span></span></span></span></span></span></span></span></span></span></code></pre> <p><span class="token keyword">10.-</span></p> <ul> <li>SET CHARACTER SET '<em class="replaceable"><code>charset_name'&nbsp;一个语句相当于这三个语句:<br></code></em><span class="token keyword">SET character_set_client&nbsp;<span class="token operator">=&nbsp;<em class="replaceable">charset_name</em><span class="token punctuation">;<br><span class="token keyword"><span class="token operator"><span class="token punctuation"><span class="token keyword">SET character_set_results&nbsp;<span class="token operator">=&nbsp;<em class="replaceable">charset_name</em><span class="token punctuation">;<br><span class="token keyword"><span class="token operator"><span class="token punctuation"><span class="token keyword"><span class="token operator"><span class="token punctuation"><span class="token keyword">SET collation_connection&nbsp;<span class="token operator">=&nbsp;<span class="token variable">@@collation_database<span class="token punctuation">;<br></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li> </ul> <p>&nbsp;</p> <p>11.-</p> <ul class="itemizedlist"> <li class="listitem"> <p><code class="literal">utf8mb4</code>MySQL 5.7和8.0之间&nbsp;的默认排序规则不同(<code class="literal">utf8mb4_general_ci</code>对于5.7,<code class="literal">utf8mb4_0900_ai_ci</code>对于8.0)。</p> </li> <li class="listitem"> <p>当8.0客户端请求一个字符集时&nbsp;<code class="literal">utf8mb4</code>,它发送给服务器的是默认的8.0&nbsp;<code class="literal">utf8mb4</code>排序规则;&nbsp;也就是说<code class="literal">utf8mb4_0900_ai_ci</code>。</p> </li> <li class="listitem"> <p><code class="literal">utf8mb4_0900_ai_ci</code>&nbsp;仅在MySQL 8.0中实现,因此5.7服务器无法识别它。</p> </li> <li class="listitem"> <p>由于5.7服务器无法识别&nbsp;<code class="literal">utf8mb4_0900_ai_ci</code>,因此无法满足客户端字符集请求,并回退到其默认字符集和排序规则(<code class="literal">latin1</code>和&nbsp;<code class="literal">latin1_swedish_ci</code>)。</p> </li> </ul> <p>在这种情况下,客户端仍然可以在连接后<code class="literal">utf8mb4</code>通过发出<code class="literal">SET NAMES 'utf8mb4'</code>语句来使用&nbsp;。得到的排序规则是5.7默认<code class="literal">utf8mb4</code>&nbsp;排序规则;&nbsp;就是这样<code class="literal">utf8mb4_general_ci</code>。如果客户端另外需要进行整理<code class="literal">utf8mb4_0900_ai_ci</code>,则无法实现该目标,因为服务器无法识别该整理。客户端必须愿意使用不同的&nbsp;<code class="literal">utf8mb4</code>排序规则,或者从MySQL 8.0或更高版本连接到服务器。</p> <p>&nbsp;</p> <p>&nbsp;12.-</p> <p>在MySQL 4.0版中,&nbsp;服务器和客户端都有一个<span class="quote">“&nbsp;<span class="quote">全局&nbsp;”字符集,并决定服务器管理员使用哪个字符。这从MySQL 4.1版开始改变。现在发生的是<span class="quote">“&nbsp;<span class="quote">握手&nbsp;”,如&nbsp;<a class="xref" title="10.4连接字符集和排序" href="https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html">第10.4节“连接字符集和排序规则”中所述</a>:</span></span></span></span></p> <div class="blockquote"> <blockquote class="blockquote"> <p>当客户端连接时,它会向服务器发送它要使用的字符集的名称。服务器使用的名称,设置&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_client"><code class="literal">character_set_client</code></a>,&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_results"><code class="literal">character_set_results</code></a>和<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_connection"><code class="literal">character_set_connection</code></a>&nbsp;系统变量。实际上,服务器<a class="link" title="13.7.5.3 SET NAMES语法" href="https://dev.mysql.com/doc/refman/8.0/en/set-names.html"><code class="literal">SET NAMES</code></a>使用字符集名称执行&nbsp;操作。</p> </blockquote> </div> <p>这样做的效果是你无法控制的客户端字符由开始设定<a class="link" title="4.3.1 mysqld - MySQL服务器" href="https://dev.mysql.com/doc/refman/8.0/en/mysqld.html"><span class="command"><strong>的mysqld</strong></span></a>用&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-server"><code class="option">--character-set-server=utf8</code></a>。但是,一些亚洲客户更喜欢MySQL 4.0的行为。为了能够保留这种行为,我们添加了一个&nbsp;<a class="link" title="4.3.1 mysqld - MySQL服务器" href="https://dev.mysql.com/doc/refman/8.0/en/mysqld.html"><span class="command"><strong>mysqld</strong></span></a>开关,&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-client-handshake"><code class="option">--character-set-client-handshake</code></a>可以关闭它&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-client-handshake"><code class="option">--skip-character-set-client-handshake</code></a>。如果启动<a class="link" title="4.3.1 mysqld - MySQL服务器" href="https://dev.mysql.com/doc/refman/8.0/en/mysqld.html"><span class="command"><strong>mysqld的</strong></span></a>使用&nbsp;<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-client-handshake"><code class="option">--skip-character-set-client-handshake</code></a>,那么,当客户端连接时,它发送的字符集的名称,它希望使用的服务器。但是,<span class="emphasis"><em>服务器会忽略来自客户端的此请求</em>。</span></p> <p>举例来说,假设您最喜欢的服务器字符集是<code class="literal">latin1</code>(不太可能在CJK区域,但这是默认值)。进一步假设客户端使用,&nbsp;<code class="literal">utf8</code>因为这是客户端操作系统支持的内容。现在,使用<code class="literal">latin1</code>默认字符集启动服务器&nbsp;:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers one-line language-terminal"><code class=" language-terminal">mysqld <span class="token constant">--character-set-server<span class="token attr-value"><span class="token punctuation">=latin1</span></span></span></code></pre> </div> <p>然后使用默认字符集启动客户端&nbsp;<code class="literal">utf8mb4</code>:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers one-line language-terminal"><code class=" language-terminal">mysql <span class="token constant">--default-character-set<span class="token attr-value"><span class="token punctuation">=utf8mb4</span></span></span></code></pre> </div> <p>通过查看以下输出可以看到生成的设置&nbsp;<a class="link" title="13.7.6.39 SHOW VARIABLES语法" href="https://dev.mysql.com/doc/refman/8.0/en/show-variables.html"><code class="literal">SHOW VARIABLES</code></a>:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-sql"><code class="language-sql hljs"><span class="token prompt">mysql&gt; <span class="token keyword"><span class="hljs-keyword">SHOW <span class="token keyword"><span class="hljs-keyword">VARIABLES <span class="token operator"><span class="hljs-keyword">LIKE <span class="token string"><span class="hljs-string">'char%'<span class="token punctuation">; <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+ <span class="token output"><span class="token punctuation">| Variable_name <span class="token punctuation">| Value <span class="token punctuation">| <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+ <span class="token output"><span class="token punctuation">| character_set_client <span class="token punctuation">| utf8 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_connection <span class="token punctuation">| utf8 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_database <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_filesystem <span class="token punctuation">| binary <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_results <span class="token punctuation">| utf8 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_server <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_system <span class="token punctuation">| utf8 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_sets_dir <span class="token punctuation">| /usr/local/mysql/share/mysql/charsets/ <span class="token punctuation">| <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre> </div> <p>现在停止客户端,并使用<a class="link" title="4.5.2 mysqladmin - 管理MySQL服务器的客户端" href="https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html"><span class="command"><strong>mysqladmin</strong></span></a>停止服务器&nbsp;。然后再次启动服务器,但这次告诉它跳过这样的握手:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers one-line language-terminal"><code class=" language-terminal">mysqld <span class="token constant">--character-set-server<span class="token attr-value"><span class="token punctuation">=utf8 <span class="token property">--skip-character-set-client-handshake</span></span></span></span></code></pre> </div> <p><code class="literal">utf8</code>再次&nbsp;启动客户端作为默认字符集,然后显示结果设置:</p> <div class="copytoclipboard-wrapper"> <pre class="programlisting line-numbers language-sql"><code class="language-sql hljs"><span class="token prompt">mysql&gt; <span class="token keyword"><span class="hljs-keyword">SHOW <span class="token keyword"><span class="hljs-keyword">VARIABLES <span class="token operator"><span class="hljs-keyword">LIKE <span class="token string"><span class="hljs-string">'char%'<span class="token punctuation">; <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+ <span class="token output"><span class="token punctuation">| Variable_name <span class="token punctuation">| Value <span class="token punctuation">| <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+ <span class="token output"><span class="token punctuation">| character_set_client <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_connection <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_database <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_filesystem <span class="token punctuation">| binary <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_results <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_server <span class="token punctuation">| latin1 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_set_system <span class="token punctuation">| utf8 <span class="token punctuation">| <span class="token output"><span class="token punctuation">| character_sets_dir <span class="token punctuation">| /usr/local/mysql/share/mysql/charsets/ <span class="token punctuation">| <span class="token output"><span class="token punctuation">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">-<span class="token punctuation"><span class="hljs-comment">+</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre> </div> <p>通过比较不同的结果可以看出,&nbsp;<a class="link" title="13.7.6.39 SHOW VARIABLES语法" href="https://dev.mysql.com/doc/refman/8.0/en/show-variables.html"><code class="literal">SHOW VARIABLES</code></a>如果使用该<a class="link" href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-client-handshake"><code class="option">--skip-character-set-client-handshake</code></a>&nbsp;选项,服务器将忽略客户端的初始设置&nbsp;。</p> <p>&nbsp;</p> <p>&nbsp;参考:&nbsp;<a href="https://dev.mysql.com/doc/refman/8.0/en/faqs-cjk.html" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/faqs-cjk.html</a>&nbsp;</p> <p class="title">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A.11 MySQL 8.0 FAQ:MySQL中文,日文和韩文字符集</p> <p class="title">&nbsp;</p> <h3 class="title">差劲的字符集配置举例:</h3> <div class="cnblogs_code"> <pre>root<span style="color: rgba(0, 128, 0, 1)">@10</span>.<span style="color: rgba(128, 0, 0, 1); font-weight: bold">10.10</span>.<span style="color: rgba(128, 0, 0, 1); font-weight: bold">10</span>(iphone) <span style="color: rgba(128, 128, 128, 1)">&gt;</span> show <span style="color: rgba(0, 0, 255, 1)">create</span> <span style="color: rgba(0, 0, 255, 1)">table</span><span style="color: rgba(0, 0, 0, 1)"> tb_order\g </span><span style="color: rgba(128, 128, 128, 1)">***************************</span> <span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span>. row <span style="color: rgba(128, 128, 128, 1)">***************************</span> <span style="color: rgba(0, 0, 255, 1)">table</span><span style="color: rgba(0, 0, 0, 1)">: tb_order </span><span style="color: rgba(0, 0, 255, 1)">create</span> <span style="color: rgba(0, 0, 255, 1)">table</span>: <span style="color: rgba(0, 0, 255, 1)">create</span> <span style="color: rgba(0, 0, 255, 1)">table</span><span style="color: rgba(0, 0, 0, 1)"> `order_82` ( `id` </span><span style="color: rgba(0, 0, 255, 1)">bigint</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">20</span>) unsigned <span style="color: rgba(128, 128, 128, 1)">not</span> <span style="color: rgba(0, 0, 255, 1)">null</span> auto_increment comment <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">自增主键</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, `order_type` </span><span style="color: rgba(0, 0, 255, 1)">char</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span>) <span style="color: rgba(0, 0, 255, 1)">character</span> <span style="color: rgba(0, 0, 255, 1)">set</span> utf8 <span style="color: rgba(128, 128, 128, 1)">not</span> <span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(0, 0, 255, 1)">default</span> <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">0</span><span style="color: rgba(255, 0, 0, 1)">'</span> comment <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">订单类型,0未知,1淘宝订单,2京东订单</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, `tel` </span><span style="color: rgba(0, 0, 255, 1)">varchar</span>(<span style="color: rgba(128, 0, 0, 1); font-weight: bold">16</span>) <span style="color: rgba(0, 0, 255, 1)">character</span> <span style="color: rgba(0, 0, 255, 1)">set</span> utf8 <span style="color: rgba(128, 128, 128, 1)">not</span> <span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(0, 0, 255, 1)">default</span> <span style="color: rgba(255, 0, 0, 1)">''</span> comment <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">收货人电话</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, `update_time` </span><span style="color: rgba(0, 0, 255, 1)">datetime</span> <span style="color: rgba(128, 128, 128, 1)">not</span> <span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(0, 0, 255, 1)">default</span> <span style="color: rgba(255, 0, 255, 1)">current_timestamp</span> <span style="color: rgba(0, 0, 255, 1)">on</span> <span style="color: rgba(0, 0, 255, 1)">update</span> <span style="color: rgba(255, 0, 255, 1)">current_timestamp</span> comment <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">更新时间</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, `create_time` </span><span style="color: rgba(0, 0, 255, 1)">datetime</span> <span style="color: rgba(128, 128, 128, 1)">not</span> <span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(0, 0, 255, 1)">default</span> <span style="color: rgba(255, 0, 255, 1)">current_timestamp</span> comment <span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">修改时间</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, </span><span style="color: rgba(0, 0, 255, 1)">primary</span> <span style="color: rgba(0, 0, 255, 1)">key</span><span style="color: rgba(0, 0, 0, 1)"> (`id`) ) engine</span><span style="color: rgba(128, 128, 128, 1)">=</span>innodb auto_increment<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(128, 0, 0, 1); font-weight: bold">1</span> <span style="color: rgba(0, 0, 255, 1)">default</span> charset<span style="color: rgba(128, 128, 128, 1)">=</span>utf8mb4 comment<span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(255, 0, 0, 1)">'</span><span style="color: rgba(255, 0, 0, 1)">订单表</span><span style="color: rgba(255, 0, 0, 1)">'</span>;</pre> </div> <p>&nbsp; &nbsp; &nbsp; 不要对字段单独配置字符集,画蛇添足,上面这样配置,字段order_type、tel的字符集为utf8,而不是utf8mb4 ,这样就会导致这两个字段无法存储表情符号,导致报错,字段的字符集配置优先于表的字符集配置。</p> <p class="title">&nbsp;</p> <p class="title">&nbsp;</p> <p class="title">####################################################</p> </div> </div> <p>&nbsp;</p>