如何使用插入语句将Unicode字符插入到MySQL中?

7

我正在使用mysql客户端进行操作。我想要做以下事情:

INSERT INTO MYTABLE VALUES(1,12,'\u5c40\u5c42');

这样就会插入两个Unicode字符。如果可以的话,我想不使用其他编程语言来完成此操作,我只想直接将插入语句粘贴到MySQL客户端中。

6个回答

8
你的表数据类型是什么?char还是varchar?你的问题不是很清楚,你是否从那一行代码中得到了一个错误?你可能会遇到以下问题:http://dev.hubspot.com/bid/7049/MySQL-and-Unicode-Three-Gotchas
编辑:这三个页面中包含了相当多的信息,应该能够帮助你:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.htmlhttp://dev.mysql.com/doc/refman/5.5/en/string-syntax.htmlhttp://dev.mysql.com/doc/refman/5.5/en/charset-literal.html。但我也看到了这个:
INSERT INTO mytable VALUES (1, 12, _ucs2'\x5C40\x5C42');

我可以做到,但在两种方式中都会插入文本“u5c40u5c42”,而不是两个Unicode字符。 - Rocky Pulley
另外,让我澄清一下,我可以使用Java插入和选择Unicode数据,但我想能够将一些插入语句粘贴到MySQL客户端中,并想知道如何格式化它们。 - Rocky Pulley
你使用的 MySQL 版本是什么? - Crewe
1
如果您的版本号 >= 5.5,则尝试使用以下代码:INSERT INTO table VALUES (1, 12, _ucs2'\x5C40\x5C42'); - Crewe

6
使用MySQL控制台,我可以将您的Unicode字符粘贴到插入命令中,MySQL会接受它。这是我使用您的数据进行的一个小测试:
CREATE TABLE xx (col1 varchar(20));
insert into xx values ('局层');
select * from xx;
+---------+
| col1    |
+---------+
| 局层   |
+---------+

我的数据库使用默认编码(latin1)。
你试过直接粘贴它们吗?如果有错误的话,你得到了什么错误信息?

问题在于我已经将它们编码为\uXXXX而不是实际字符,我已经有了一个巨大的插入语句列表。 - Rocky Pulley
哦,我误解了问题。答案是目前没有办法编码Unicode字符 :) - Bohemian
好的,谢谢。我想我需要编写一个小程序来读取这些语句并使用Java进行编码。 - Rocky Pulley
如果您的数据库编码设置为latin1,则似乎纯属运气,这些字符在控制台上显示相同。 - Jörn Horstmann

0

这对我有用

$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Change character set to utf8
mysqli_set_charset($con,"utf8");

0

使用MySQL Workbench

  1. 修改你想要插入Unicode的那个列所在的表。
  2. 将该列的排序规则更改为utf8-default排序规则
  3. 应用设置,现在你可以插入Unicode了。

MySQL Workbench Screenshot


0

这将取决于您使用的编程语言,或者是否直接处理数据库。您是要从查询浏览器或其他工具进行简单插入,还是通过Web应用程序进行操作?如果是后者,Web应用程序使用的是哪种语言?如果是.NET应用程序,可以尝试在连接字符串中设置字符集,即charset=utf8。

如果您正在使用PHP进行某些操作,请查看此链接http://randomchaos.com/documents/?source=php_and_unicode

您还可以将数据库的默认字符集设置为UTF-8。不确定这将如何影响当前数据,请确保在对数据库进行更改之前备份所有内容。


0
在我的情况下,我需要通过C#表单应用程序将阿拉伯字符插入到MySql服务器中。对我有效的唯一方法如下:
首先,在您的代码中,将字符集指定为连接字符串,如下所示:
MySqlConnection mysqlConn = new MySqlConnection("Server= serverName; Port=3306; Database= dbName;  Uid = userName; Pwd=password; charset=utf8");

第二步:在phpMyAdmin控制台中,单击您的数据库名称链接,然后转到“操作”选项卡,然后转到底部的“排序规则”,选择“utf8_unicode_ci”,并检查下面的选项,最后单击“Go”。

这里有详细步骤


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接