首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql character_set_results没有更改

mysql character_set_results没有更改
EN

Stack Overflow用户
提问于 2016-02-21 08:08:23
回答 1查看 472关注 0票数 2

我在hibernate中使用mysql,所有其他语言(包括英语)都有问题。我得到和例外地说,语言不是utf8,虽然语言是utf8 (希伯来语)。

我运行了show variables like '%character%';,这就是我得到的:

我想也许character_set_server是问题所在?这是latin1,我不能把它改成utf8,我该怎么做呢?我正在使用amazon,在参数组下面我看到了utf character_set_server,所以我不明白为什么上面没有utf8。

另一方面,也许这根本不是问题所在。欢迎任何其他建议。

编辑:

我设法将附加的图像值更改为utf8,但仍然得到以下例外:

代码语言:javascript
复制
2016-02-21 08:46:05 DEBUG SqlExceptionHelper:139 - could not execute statement [n/a]
java.sql.SQLException: Incorrect string value: '\xD7\xAA\xD7\xA9\xD7\x95...' for column 'text' at row 1
    ...
    ...
    ...
    2016-02-21 08:46:05 WARN  SqlExceptionHelper:144 - SQL Error: 1366, SQLState: HY000
    2016-02-21 08:46:05 ERROR SqlExceptionHelper:146 - Incorrect string value: '\xD7\xAA\xD7\xA9\xD7\x95...' for column 'text' at row 1
    2016-02-21 08:46:05 INFO  AbstractBatchImpl:208 - HHH000010: On release of batch it still contained JDBC statements
    2016-02-21 08:46:05 DEBUG SqlExceptionHelper:225 - SQL Warning
    java.sql.SQLWarning: Incorrect string value: '\xD7\xAA\xD7\xA9\xD7\x95...' for column 'text' at row 1

编辑2:

所以我也设法修复了异常。它现在在DB中保存得很好。我通过为每一列调用以下命令来修正它:

代码语言:javascript
复制
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;

我现在的问题是,结果从带有问号的DB返回。在调用character_set_results时,我仍然会看到show variables like '%character%';的空值

EN

回答 1

Stack Overflow用户

发布于 2016-02-22 00:57:02

我不认为character_set_server是问题所在。

\xD7\xAA\xD7\xA9\xD7\x95是“תשו”的utf8 8编码的十六进制。如果将其解释为latin1,则为“×as×C×·”。

一个奇怪的设置是空值(空字符串?零?)对于character_set_result,它控制SELECT期间的音译。

请提供SELECT col, HEX(col) FROM ...的输出--如果您得到希伯来字符串的D7AAD7A9D795十六进制,那么数据将被正确地存储,我们应该查看输出端。如果没有,则数据被错误地存储。或者ALTER把事情搞砸了。

希伯来语,在utf8中,显示为十六进制,主要是'D7xx‘。

您需要在几个地方使用utf8:

  • 要插入的字节需要在utf8中进行编码。
  • 连接需要在utf8中。<property name="url" value="jdbc:mysql://...&characterSetResults=utf8&characterEncoding=utf-8"/>
  • 表定义需要表示CHARACTER SET utf8 (或utf8mb4)。做SHOW CREATE TABLE
  • html输出需要<meta charset=utf-8" />
  • 如果数据来自HTML表单:<form accept-charset="UTF-8">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35533777

复制
相关文章

相似问题

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