Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 将文件插入数据库_Utf 8 - Fatal编程技术网

Utf 8 将文件插入数据库

Utf 8 将文件插入数据库,utf-8,Utf 8,我有csv文件、java应用程序和数据库,我从java应用程序和数据库中读取csv文件 在一些操作之后,我将文件一个接一个地插入到数据库中,但是像ŠŽĆ楘这样的字符没有正确插入。我将数据库设置为utf-8默认排序规则。通过测试,我意识到,当我使用ANSI编码设置文件时,一切正常(ĐŽĆĆĆ正确插入数据库),但当编码为UTF-8时,字符没有正确插入。问题是我必须插入DB的文件必须用UTF-8编码。 你能帮我解决这个问题吗?没有更多细节,很难说得具体,但我想到了几件事: 1) 如果我理解正确,您是说

我有csv文件、java应用程序和数据库,我从java应用程序和数据库中读取csv文件 在一些操作之后,我将文件一个接一个地插入到数据库中,但是像ŠŽĆ楘这样的字符没有正确插入。我将数据库设置为utf-8默认排序规则。通过测试,我意识到,当我使用ANSI编码设置文件时,一切正常(ĐŽĆĆĆ正确插入数据库),但当编码为UTF-8时,字符没有正确插入。问题是我必须插入DB的文件必须用UTF-8编码。
你能帮我解决这个问题吗?

没有更多细节,很难说得具体,但我想到了几件事:

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完成的。