首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL DB中更新/插入西里尔数据(Windows 10,XAMPP v3.2.4)?

如何在MySQL DB中更新/插入西里尔数据(Windows 10,XAMPP v3.2.4)?
EN

Stack Overflow用户
提问于 2020-07-01 00:44:11
回答 1查看 142关注 0票数 1

我在使用XAMPP控制面板v3.2.4的Windows 10中观察到了一种奇怪的情况

启动终端窗口并连接到Mysql。

注意:在终端窗口之前,发出命令'chcp 65001‘以支持UTF8编码。

现在,当我试图用西里尔语更新某个表时,MySQL会抱怨没有关闭引号。如果我替换了西里尔的英语输入,那么命令就被接受了。

代码语言:javascript
复制
MariaDB [youtube]> update episodes set name='Катя' where id=11;
    '>

如果我试图向DB中插入新记录,也会发生同样的情况。

代码语言:javascript
复制
MariaDB [youtube]> insert into episodes (youtube_id,series_id,season,episode,name) values (12345678904,1,0,1,'Катя');
    '>

如果使用双引号,则情况相同。

代码语言:javascript
复制
MariaDB [youtube]> insert into episodes (youtube_id,series_id,season,episode,title) values (12345678904,1,0,1,"Катя");
    ">

要让它通过终端窗口工作,需要多神奇的触摸?

更新:

约翰建议查看MariaDB的配置文件以获取UTF8设置。

设置更改为以下内容,问题仍然存在

代码语言:javascript
复制
# The MySQL server
default-character-set=utf8mb4

[mysqld]
init-connect=\'SET NAMES utf8\'
character_set_server=utf8
collation_server=utf8_unicode_ci
skip-character-set-client-handshake
character_sets-dir="C:/bin/XAMPP/App/xampp/mysql/share/charsets"

最初的设置是

代码语言:javascript
复制
# The MySQL server
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

服务器状态报告

代码语言:javascript
复制
MariaDB [youtube]> \s
--------------
mysql  Ver 15.1 Distrib 10.4.10-MariaDB, for Win64 (AMD64), source revision c24ec3cece6d8bf70dac7519b6fd397c464f7a82

Connection id:          17
Current database:       youtube
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.4.10-MariaDB mariadb.org binary distribution
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
TCP port:               3306
Uptime:                 11 min 12 sec

Threads: 7  Questions: 59  Slow queries: 0  Opens: 22  Flush tables: 1  Open tables: 16  Queries per second avg: 0.087
--------------

MariaDB文档引用了一个选项--default-character-set=name

在命令行上使用--default-character-set=utf8mb4的尝试对终端客户端的插入/更新记录行为没有影响。

代码语言:javascript
复制
mysql -u root -p --default-character-set=utf8mb4 youtube
....
MariaDB [youtube]> update episodes set title='Катя' where id=11;
    '>
EN

回答 1

Stack Overflow用户

发布于 2020-07-01 01:56:18

我强烈建议获得免费软件程序HeidiSQL的副本。它并不完美,甚至偶尔也会崩溃,尽管与我工作过的其他东西相比,它还不够完美吗?哦,天哪,完全值得我花时间。

其次,要确保您使用的是以下内容:

数据库字符集:utf8mb4数据库排序规则:utf8mb4_unicode_520_ci

这些都有最伟大的UTF-8支持,从我从Stackoverflow成员里克·詹姆斯,通过他的网站读到。他是个数据库巨星,所以如果你雇他的话,就把一桶钱扔到他脸上。他的网站有一个比较图表。事实上,从上次检查到现在已经有一段时间了,而且520可能已经被取代了。

要设置/更改数据库字符集,需要更改MariaDB的MariaDB配置文件,建议使用Notepad++进行代码编辑。这应该会使任何新创建的数据库使用正确的编码,但是您可能需要遍历并手动更新数据库、表和表列的字符集和排序规则,所以不要忘记彻底!

代码语言:javascript
复制
[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_520_ci

一旦你这样做了,你对俄语/希腊语/etc的查询就应该像对英语一样正常工作。关键词:应该。

因为我只会说两种语言(英语和糟糕的英语),所以我将所有的字符编码到某个Unicode数字点上,只是为了确定。它将占用更多的空间,但是,在定义了大多数语言之后,有时会为Unicode添加一些字符,从而可能使语言支持变得支离破碎。如果你有兴趣的话,我会帮你找到那个代码的。

我是一个中等水平的理解,我不是里克詹姆斯,虽然我有大约20或30页翻译(使用搜索功能和搜索‘翻译’)在我的网站上,如果你想看到输出。在我做了这些事情之后,我不再让数据被破坏。我希望这能帮到你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62668055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档