gpt4 book ai didi

mysql - Windows cmd向MySQL插入汉字时出现的奇怪问题

转载 作者:行者123 更新时间:2023-11-30 21:48:20 24 4
gpt4 key购买 nike

我的环境

  • 系统:Windows 7 64 位
  • 数据库:MySQL 5.7.20 64位
  • 语言环境:中文
  • 命令代码页:CP936

MySQL设置

我的问题

在上述环境和数据库设置下,我尝试向创建的表cs_2中插入一条记录,但是,它失败了。

SQL语句如下:

insert into cs_2 (direction) values('出');

结果是:

ERROR 1366 (HY000): Incorrect string value: '\xBA' for column 'direction' at row 1

个人分析

经过对mysql字符转换和Windows cmd输入转换的一些研究,我得到了以下指导:

  • 首先是我在cmd输入字符串时的字符转换:

Keyborad typing -> inputmethod conversion -> system inner encoding

在我的例子中,系统内部编码是'出'的UTF-16 LE格式的字节流

  • 其次是在MySQL通信中根据系统变量进行转换

system inner encoding -> character_set_client -> character_set_connection -> character set of table

就我而言,这是

UTF-16 LE -> gbk -> gbk ->gbk

仅在系统内部编码和 character_set_client 之间开始时才发生转换。而且我认为转换是由系统本身执行的。

因此,在这种假设下,insert SQL应该运行成功,但它失败了!我不知道为什么,我已经为这个问题苦苦挣扎了几天,但我找不到解决方案。

如果有哪位碰巧遇到过这个问题,请给我一些线索。非常感谢!

最佳答案

在mysql中创建数据库或表时,必须指定要以utf-8格式创建此表(如果要使用中文字符集进行操作,则需要这样做)
创建具有 utf8 格式字符集的表(或者可能更好的是整个数据库):

将表转换为 utf8:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

要将整个数据库转换为 utf8,请查看以下答案:
How to convert an entire MySQL database characterset and collation to UTF-8?

要从头开始创建 utf8 数据库,请使用以下命令:

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

(来源 https://dba.stackexchange.com/a/76789)

这有望解决您的问题。

关于mysql - Windows cmd向MySQL插入汉字时出现的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48439929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com