Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 修复mariadb数据库上字符集编码的步骤_Utf 8_Character Encoding_Mariadb - Fatal编程技术网

Utf 8 修复mariadb数据库上字符集编码的步骤

Utf 8 修复mariadb数据库上字符集编码的步骤,utf-8,character-encoding,mariadb,Utf 8,Character Encoding,Mariadb,我在Docker容器中创建了一个mariadb数据库,然后使用SQuirreL的“创建数据脚本”操作从较旧版本的应用程序中复制了一些数据,该操作生成了一组“INSERT INTO”语句。这一切都很好,我们已经将新数据写入数据库几个星期了 昨天有人报告了一个试图保存新数据的错误,我从日志中发现: Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Incorrect string value: '\xC2\x95\x09Onb

我在Docker容器中创建了一个mariadb数据库,然后使用SQuirreL的“创建数据脚本”操作从较旧版本的应用程序中复制了一些数据,该操作生成了一组“INSERT INTO”语句。这一切都很好,我们已经将新数据写入数据库几个星期了

昨天有人报告了一个试图保存新数据的错误,我从日志中发现:

Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Incorrect string value: '\xC2\x95\x09Onb...' for column 'ssimpact' at row 1
我确定他们试图保存的文本中有从Outlook中收到的电子邮件中复制的“项目符号”字符。我尝试了一个类似的测试,在MS Word文档中创建一个项目符号,并将其复制到文本字段中并试图保存它,这产生了相同的错误

显然,我有一个字符编码问题。用户有一个变通方法,简单地用星号替换项目符号字符,但我想避免这种变通方法的需要

我注意到,当我在SQuirreL中运行“SELECT*FROM INFORMATION\u SCHEMA.SCHEMATA”时,它显示我的数据库的字符集和排序规则是“latin1”和“latin1\u swedish\u ci”,但也有“INFORMATION\u SCHEMA”数据库,带有“utf8”和“utf8\u general\u ci”

我是否需要使用“utf8”和“utf8\u general\u ci”创建此数据库以避免此问题

假设是这样,并且我不想重新创建数据库并重新复制所有数据,如果我执行以下操作:

ALTER TABLE table_name CONVERT TO CHARACTER SET 'utf-8' COLLATE 'utf8_general_ci';

对于所有可能获得这些“特殊”字符的表,这能解决这个问题吗?我还需要做些什么吗?

C29509
不注册为任何明显的操作。是最初的十六进制,还是你以前做过某种形式的改变?你能再提供一个样品吗?你能说它应该说什么吗?在拉丁语1中,95是一个项目符号,但c2和09没有意义。我只是创建了一个空白的msword文档,将其置于项目符号模式,输入“abcd”,回车,efgh,然后复制该文档并将其粘贴到我的web表单中并保存。这导致“org.mariadb.jdbc.internal.util.dao.QueryException:不正确的字符串值:”\xC2\x95\x09Abc…“用于第1行的“sImpact”列。导出为纯ascii而非富文档(.doc)。您的建议是,我告诉用户,他们不能直接从msword文档粘贴到表单中。我需要一个更好的解决方案。好吧,如果你将事情声明为
latin1
,它将更接近:
和一个选项卡。我不知道为什么Word有
(C2)。