问题摘要:无法使用以下变量打开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。主要问题是配置的任何变化都没有发生**
答案 0 :(得分:1)
HEX
中Alef的CHARACTER SET hebrew
为F0
;在utf8中,它是D790
。检查应用程序语言中的十六进制,看看你有哪些。然后相应地SET NAMES
到hebrew
或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 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。
解决了这个问题......:)
非常感谢!!
丹尼尔