MySQL 5.7.7排序规则';希伯来语"通用"词&"x27;对于字符集';无效;utf8';

MySQL 5.7.7排序规则';希伯来语"通用"词&"x27;对于字符集';无效;utf8';,mysql,character-encoding,collation,hebrew,Mysql,Character Encoding,Collation,Hebrew,问题摘要:无法使用以下变量打开MySQL 5.7.7: character_set_client hebrew character_set_connection hebrew character_set_database hebrew character_set_filesystem hebrew character_set_results hebrew character_set_server hebrew character_set_system hebr

问题摘要:无法使用以下变量打开MySQL 5.7.7:

character_set_client    hebrew
character_set_connection    hebrew
character_set_database  hebrew
character_set_filesystem    hebrew
character_set_results   hebrew
character_set_server    hebrew
character_set_system    hebrew
character_sets_dir  C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\
MYSQL 5.7.7所写的内容:“希伯来文\u通用\u ci”对字符集“utf8”无效

我能得到什么:

character_set_client    utf8
character_set_connection    utf8
character_set_database  utf8
character_set_filesystem    binary
character_set_results   utf8
character_set_server    utf8
character_set_system    utf8
character_sets_dir  C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\
软件:MySQL 5.7.7

操作系统:WIN7 64位

我做了什么: 1。将C:\ProgramData\MySQL\MySQL Server 5.7\My.ini配置文件中的所有数据更改为:

[client]
no-beep
default-character-set = hebrew

[mysql]

default-character-set=hebrew

[mysqld]

init_connect='SET collation_connection = hebrew_general_ci'
character-set-server = hebrew
collation-server = hebrew_general_ci
init-connect='SET NAMES hebrew'
init_connect='SET collation_connection = hebrew_general_ci' 
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"  
2。使用以下命令从cmd运行服务器:

[client]
no-beep
default-character-set = hebrew

[mysql]

default-character-set=hebrew

[mysqld]

init_connect='SET collation_connection = hebrew_general_ci'
character-set-server = hebrew
collation-server = hebrew_general_ci
init-connect='SET NAMES hebrew'
init_connect='SET collation_connection = hebrew_general_ci' 
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"  
3。从CMD运行服务器时收到错误消息

MySQL 5.7.7 collation 'hebrew_general_ci' is not valid for character set 'utf8'

**四,。主要问题是没有发生任何配置更改**

希伯来语字符集中Alef的
十六进制
F0
;在utf8中,它是
D790
。检查应用程序语言中的十六进制,看看您有哪些。然后相应地将名称设置为希伯来语或utf8

mysql> SET NAMES hebrew;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | hebrew                                        |
| character_set_connection | hebrew                                        |
| character_set_database   | latin1                                        |
| character_set_filesystem | binary                                        |
| character_set_results    | hebrew                                        |
| character_set_server     | utf8                                          |
| character_set_system     | utf8                                          |
| character_sets_dir       | c:\wamp\bin\mysql\mysql5.6.12\share\charsets\ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.00 sec)
请注意,
SET NAMES
如何仅修改其中3个条目。修改任何其他内容都是危险的。建议你不要改变其他人

SET name
向mysql声明客户端中的编码。表中的编码可以不同。特别是,由于您似乎想要
希伯来语\u常规\u ci
,因此获得它的唯一方法(或等效方法,因为似乎没有utf8\u希伯来语\u ci)是将列声明为
字符集希伯来语排序规则希伯来语\u常规\u ci
。请记住,此设置独立于客户端中的enocoding<代码>设置名称
根据需要处理转换

如果应用程序涉及一个网页,meta标记需要包含客户端的字符集

当以
root
身份连接时,将跳过
init_connect
(在
my.ini
中)。因此,您可能会发现令人困惑的结果;避免成为root用户(或任何
SUPER
用户)


指定在希伯来语\u general\u ci中发生的情况;这可能没什么特别的。我的观点是--
utf8
utf8\u general\u ci
可能会给你相同的结果。

谢谢你快速而翔实的回复。我用于读取MySQL表的应用程序是SAS9.4。实际上,我正在尝试通过MySQL的SAS\ACCESS接口读取MySQL表

经过一番研究,我已经更改了SAS cfg文件(C:\Program Files\SASHome\SASFoundation\9.4\sasv9.cfg)

现在,两个应用程序都“对话”utf8

这解决了问题……:)

非常感谢


Daniel

在[mysqld]下尝试,只保留
字符集服务器…
排序服务器…
并添加
init\u connect='set collation\u connection=hebrew\u general\u ci,命名希伯来语“
还添加或取消注释这些行
character\u set\u client=希伯来语character\u set\u connection=希伯来语character\u set\u results=希伯来语
并重新启动