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