Java + Mysql从ISO-8859-1到UTF-8

时间:2011-12-28 12:03:28

标签: java mysql encoding utf-8

我有一个数据库,其中包含Windows Baltic(windows-1257)的编码。我使用UTF-8立陶宛语(使用sql语言)将数据复制到其他数据库。复制数据后,我仍然没有得到UTF-8值 - “Nerûdijantispliens”,我需要“Nerūdijantispliens”。我做了很少的Java应用程序,应该从UTF-8数据库中获取数据,并从Latin db和System.out.println(..)复制数据。但是现在因为复制后数据仍然出错我打印出错误的编码。我该怎么办?我应该用某种编码句子复制数据,还是应该在打印期间使用Java来改变编码?

编辑:我需要PHP中的iconv,当我用它来转换数据时,它会起作用。

4 个答案:

答案 0 :(得分:2)

可能会帮助您使用MySql Collations

答案 1 :(得分:0)

要将ISO-8859-1转换为UTF-8,我们可以使用以下代码

//将ISO-8859-1转换为UTF-8

byte[] utf8 = new String(dataInString, "ISO-8859-1").getBytes("UTF-8");

或查看java.nio.Charset

Converting UTF-8 to ISO-8859-1 in Java - how to keep it as single byte

答案 2 :(得分:0)

当然,在数据库中,文本应为UTF-8。你可以只做一个相关表的 mysqldump 来检查它出错的地方。

一个好的程序员的编辑器,如 JEdit http://jedit.org)可以切换编码,这可能会有所帮助。

Web服务器需要执行response.setContentText(“text / html; charset = UTF-8”)。 正常的应用程序应该没有问题,因为Java在内部使用, 操作系统编码是立陶宛语的编码:System.getProperty("file.encoding")

对于Java MySQL驱动程序,您还需要将通信设置为UTF-8: Character encoding issue with linux and mysql

System.out.println以默认系统编码打印,这可能会产生误导。 Best是字节的十六进制转储,因此您可以进行实际检查。

答案 3 :(得分:0)

我将这个帖子标记为需要转移到不同的论坛,但由于没有做任何事情,我让它工作here