不同的字符集命令行vs Workbench vs Eclipse



俄文字母问题。在mysql的windows 7命令行中使用下一个字符集配置:

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | utf8_general_ci   |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

都很好,我得到这样的结果:

+------------------+
| name             |
+------------------+
| СТАНДАРТ+        |
| VIP тариф        |
| БАЗОВЫЙ 30       |
| БИЗНЕС 512       |

但是在MySQL Workbench中使用这个配置得到这个:

��������+
VIP �����
������� 30

和在java应用程序中的Eclipse控制台或windows提示符:

????????+
VIP ?????
??????? 30

有什么问题吗?

确保在任何地方使用Unicode (UTF-8编码):

  • 连接MySQL时
  • 在Eclipse
  • 中的项目设置MySQL Workbench的首选项

还要确保你已经安装了支持Unicode的字体,并且你已经配置了你的应用程序来使用这些字体(默认字体应该很好;如果您更改了字体,则重新设置首选项)。

在java中通过get ResultSet字符串结束从ISO-8859-1中获取它字节来解决问题。create new String from bytes.

new String(rs.getString(1).getBytes("ISO-8859-1"))

最新更新