问题摘要:无法使用以下变量打开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\MySQL5.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服务器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.主要问题是配置没有发生任何变化**
发布于 2015-05-04 17:02:22
HEX for Alef in 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中)被跳过。因此,您可能会发现令人困惑的结果;避免成为根用户(或任何SUPER用户)。
这张校对图指定了在hebrew_general_ci中发生的事情;它可能不是什么特别的东西。我的观点是-- utf8和utf8_general_ci可以给出相同的结果。
发布于 2015-05-05 05:48:35
感谢您的快速而翔实的回复。我的MySQL表读取应用程序是SAS9.4。实际上,我正在尝试通过SAS接口读取MySQL表到MySQL。
经过一番研究,我更改了我的SAS cfg文件(C:\Program \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。
解决了问题..。:)
非常感谢!!
丹尼尔
https://stackoverflow.com/questions/30032648
复制相似问题