MySQL 5.7.7校对'hebrew_general_ci'对字符集'utf8'无效

时间:2015-05-04 14:26:15

标签: 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    hebrew
character_sets_dir  C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\

MYSQL 5.7.7写道:'hebrew_general_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

操作系统:WIN 7 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' 

2。从cmd运行服务器:

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'

** 4。主要问题是配置的任何变化都没有发生**

2 个答案:

答案 0 :(得分:1)

HEX中Alef的CHARACTER SET hebrewF0;在utf8中,它是D790。检查应用程序语言中的十六进制,看看你有哪些。然后相应地SET NAMEShebrewutf8

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 NAMES向mysql声明客户端中的编码内容。表中的编码可以不同。特别是,因为你似乎想要hebrew_general_ci,获得它的唯一方法(或等效的,因为似乎没有utf8_hebrew_ci)就是声明列为CHARACTER SET hebrew COLLATION hebrew_general_ci。请记住,此设置与客户端中的编码无关;如果需要,SET NAMES会处理转化。

如果应用程序涉及网页,则元标记需要包含客户端字符集。

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

This collation chart指定hebrew_general_ci中发生的事情;它可能没什么特别的。我的观点是 - utf8 utf8_general_ci可能会给你相同的结果。

答案 1 :(得分:0)

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

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

From: -config "C:\Program Files\SASHome\SASFoundation\9.4\nls\en\sasv9.cfg"
To: -config "C:\Program Files\SASHome\SASFoundation\9.4\nls\u8\sasv9.cfg"

现在两个应用程序都“说”了utf8。

解决了这个问题......:)

非常感谢!!

丹尼尔