Java 不同的字符集命令行与工作台与Eclipse

Java 不同的字符集命令行与工作台与Eclipse,java,mysql,eclipse,character-encoding,mysql-workbench,Java,Mysql,Eclipse,Character Encoding,Mysql Workbench,俄语字母有问题。 在mysql的windows 7命令行中,使用下一个字符集配置: +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_

俄语字母有问题。 在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/ |
+--------------------------+----------------------------------+

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

+------------------+
| name             |
+------------------+
| СТАНДАРТ+        |
| VIP тариф        |
| БАЗОВЫЙ 30       |
| БИЗНЕС 512       |
但通过MySQL Workbench中的此配置,您可以获得以下信息:

��������+
VIP �����
������� 30
在Eclipse控制台或windows提示符中的java应用程序中:

????????+
VIP ?????
??????? 30
问题出在哪里?

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

  • 当连接到MySQL时
  • 在Eclipse中的项目设置中
  • 在MySQL工作台的首选项中

另外,请确保已安装支持Unicode的字体,并且已将应用程序配置为使用这些字体(默认字体应该可以;如果更改了字体,请重置首选项)。

在java中,通过get
ResultSet
string end get from it bytes In
ISO-8859-1
解决了问题。然后从字节创建新字符串

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

Eclipse和Workbench中的所有选项都是默认选项!违约通常是错误的。如果您为自己编写的代码从未与世界上任何其他人共享,则默认设置是可以的。一旦您编写的代码将在不同的系统上运行(如使用不同默认编码的系统),则默认代码将中断。-1此代码将在使用不同默认编码的Windows系统上中断。
new String(rs.getString(1).getBytes("ISO-8859-1"))