【发布时间】:2013-08-07 07:25:11
【问题描述】:
我正在用 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 数据的信息。不过,它们都不适合我。
您能否针对我的具体用例提供说明?
【问题讨论】:
-
您是否设置了MySQL to use utf8,或者在创建时设置了table to use 'utf8' as it's charset?另外,检查你打印输出的东西是否支持 UTF 字符,有时你会得到正确的数据,但是你用来查看它的东西把它弄乱了......
-
您可以尝试查看输出的一个技巧是将其写入文本文件,然后尝试在 Firefox 中打开该文件。众所周知,Windows 终端很难让编码正常工作:-(
-
我已经使用建议的命令检查了数据库、表和列的字符集,它们似乎都是 utf-8,即没问题。即使使用 File.withWriter 方法将输出写入文本文件,结果仍然损坏。
-
您可以尝试将您的连接网址更改为:
'jdbc:mysql://localhost/db?useUnicode=true&characterEncoding=UTF-8'
标签: mysql jdbc utf-8 groovy character-encoding