Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows上设置MySQL以通过Groovy JDBC连接接受UTF-8数据_Mysql_Jdbc_Utf 8_Groovy_Character Encoding - Fatal编程技术网

如何在Windows上设置MySQL以通过Groovy JDBC连接接受UTF-8数据

如何在Windows上设置MySQL以通过Groovy JDBC连接接受UTF-8数据,mysql,jdbc,utf-8,groovy,character-encoding,Mysql,Jdbc,Utf 8,Groovy,Character Encoding,我正在用Groovy编写一个脚本,它需要存储(并在以后检索)包含捷克字符(如č、š、í、ě等)的数据 我使用标准的JDBC连接,如 def sql = Sql.newInstance( 'jdbc:mysql://localhost/db', 'root', '', 'com.mysql.jdbc.Driver' ); sql.executeInsert( 'INSERT INTO ... VALUES ...', [ ... ] ); 我已经下载

我正在用Groovy编写一个脚本,它需要存储(并在以后检索)包含捷克字符(如č、š、í、ě等)的数据

我使用标准的JDBC连接,如

def sql = Sql.newInstance(
    'jdbc:mysql://localhost/db', 
    'root',
    '', 
    'com.mysql.jdbc.Driver'
);

sql.executeInsert(
    'INSERT INTO ... VALUES ...', [ ... ]
);
我已经下载了64位Windows机器的最新MySQL ZIP存档,并将其解压缩到本地硬盘上。现在,我通过从命令行手动启动的
mysqld
运行它(出于测试目的)

当我存储和检索数据时,一些捷克符号已损坏(?s显示,而不是它们)。我相信数据库的编码是错误的。我更喜欢使用UTF-8编码数据的脚本

我在互联网上找到了很多关于如何设置MySQL来处理UTF-8数据的(相互不同的)信息。不过,他们中没有一个人为我工作


您能为我的特定用例提供说明吗?

只要您的db/table/column设置为使用
UTF-8
,您就可以尝试将连接参数更改为:

def sql = Sql.newInstance(
    'jdbc:mysql://localhost/db?useUnicode=true&characterEncoding=UTF-8', 
    'root',
    '', 
    'com.mysql.jdbc.Driver'
)

您是否设置了,或在创建时设置了?此外,请检查打印输出的内容是否支持UTF字符,有时会返回正确的数据,但查看输出时使用的内容会将其弄糟……查看输出时可以尝试的一个技巧是将其写入文本文件,然后尝试在Firefox中打开该文件。众所周知,Windows终端很难正确编码:-(我使用建议的命令检查了数据库、表和列的字符集,它们似乎都是utf-8,即ok。即使使用file.withWriter方法将输出写入文本文件,结果仍然损坏。是否可以尝试将连接url更改为:
'jdbc:mysql://localhost/db?useUnicode=true&characterEncoding=UTF-8'