Utf 8 将文件插入数据库
我有csv文件、java应用程序和数据库,我从java应用程序和数据库中读取csv文件 在一些操作之后,我将文件一个接一个地插入到数据库中,但是像ŠŽĆ楘这样的字符没有正确插入。我将数据库设置为utf-8默认排序规则。通过测试,我意识到,当我使用ANSI编码设置文件时,一切正常(ĐŽĆĆĆ正确插入数据库),但当编码为UTF-8时,字符没有正确插入。问题是我必须插入DB的文件必须用UTF-8编码。Utf 8 将文件插入数据库,utf-8,Utf 8,我有csv文件、java应用程序和数据库,我从java应用程序和数据库中读取csv文件 在一些操作之后,我将文件一个接一个地插入到数据库中,但是像ŠŽĆ楘这样的字符没有正确插入。我将数据库设置为utf-8默认排序规则。通过测试,我意识到,当我使用ANSI编码设置文件时,一切正常(ĐŽĆĆĆ正确插入数据库),但当编码为UTF-8时,字符没有正确插入。问题是我必须插入DB的文件必须用UTF-8编码。 你能帮我解决这个问题吗?没有更多细节,很难说得具体,但我想到了几件事: 1) 如果我理解正确,您是说
你能帮我解决这个问题吗?没有更多细节,很难说得具体,但我想到了几件事: 1) 如果我理解正确,您是说您的CSV是UTF8格式的?你验证过这个假设是正确的吗?另一方面,如果您认为它是UTF-8,那么如何将该文件加载到Java中 注意,Java的文件读取器使用系统的默认字符编码。它不一定是UTF-8,您可以检查是否打印
System.getProperty(“file.encoding”)代码>
我倾向于不依赖于此,而是按照以下已知编码加载:
FileInputStream fis = new FileInputStream("myfile.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-8"));
...
2) 数据库排序规则不同于指定字符集。(注意,如果您还提到了您的数据库客户机,这将非常方便)。排序规则与文本的排序/排序有关。通常需要指定字符集。这在很大程度上取决于您的数据库。1。我的CSV-s是UTF-8格式,我以标准方式加载文件:文件f=新文件(“C:\\…”),而不是在while循环中处理每一行。之后,我在MySql数据库(JDBC驱动程序)中插入文件。2.我当时读到:“如果在没有字符集的情况下指定了COLLATE Y,那么将使用与Y和collation Y关联的字符集”,因此,如果我设置UTF-8默认排序规则,那么字符集将是UTF-8。不过,文件对象不是读取器,这正是我热衷于发现的。我已经更新了我的答案,以显示它是如何为utf-8完成的。