我在hibernate中使用mysql,所有其他语言(包括英语)都有问题。我得到和例外地说,语言不是utf8,虽然语言是utf8 (希伯来语)。
我运行了show variables like '%character%';,这就是我得到的:

我想也许character_set_server是问题所在?这是latin1,我不能把它改成utf8,我该怎么做呢?我正在使用amazon,在参数组下面我看到了utf character_set_server,所以我不明白为什么上面没有utf8。
另一方面,也许这根本不是问题所在。欢迎任何其他建议。
编辑:
我设法将附加的图像值更改为utf8,但仍然得到以下例外:
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中保存得很好。我通过为每一列调用以下命令来修正它:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;我现在的问题是,结果从带有问号的DB返回。在调用character_set_results时,我仍然会看到show variables like '%character%';的空值
发布于 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:
<property name="url" value="jdbc:mysql://...&characterSetResults=utf8&characterEncoding=utf-8"/>CHARACTER SET utf8 (或utf8mb4)。做SHOW CREATE TABLE。<meta charset=utf-8" />。<form accept-charset="UTF-8">https://stackoverflow.com/questions/35533777
复制相似问题