【问题标题】:How to set up MySQL on Windows to accept UTF-8 data via Groovy JDBC connections如何在 Windows 上设置 MySQL 以通过 Groovy JDBC 连接接受 UTF-8 数据
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 2021-05-13
    • 1970-01-01
    • 2018-10-05
    • 2014-07-08
    • 2012-03-05
    • 2014-08-17
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多