gpt4 book ai didi

java - mysql character_set_results 没有改变

转载 作者:行者123 更新时间:2023-11-29 03:26:26 24 4
gpt4 key购买 nike

我在使用 mysql 和 hibernate 时遇到了所有其他语言的问题,然后是英语。尽管语言是 utf8(希伯来语),但我收到异常说明该语言不是 utf8。

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

enter image description here

我想也许是 character_set_server 的问题?它是 latin1,我无法将其更改为 utf8,我该怎么做?我正在使用 amazon RDS,在参数组下我看到了 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:

所以我也设法修复了异常。它现在保存在数据库中。我通过为每一列调用以下命令来修复它:

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;

我现在的问题是从数据库返回的结果带有问号。调用 show variables like '%character%';

时,我仍然看到 character_set_results 为空值

最佳答案

我不认为character_set_server是问题所在。

\xD7\xAA\xD7\xA9\xD7\x95是 'תשו' 的 utf8 编码的十六进制。如果它被解释为 latin1,它将是 'תשו'。

一个奇怪的设置是 character_set_result 的空值(空字符串?NULL?) , 它在 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">

关于java - mysql character_set_results 没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com