Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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
Java 运行时未将UTF-8字符正确存储到SQLite DB_Java_Sqlite_Utf 8 - Fatal编程技术网

Java 运行时未将UTF-8字符正确存储到SQLite DB

Java 运行时未将UTF-8字符正确存储到SQLite DB,java,sqlite,utf-8,Java,Sqlite,Utf 8,我编写了以下代码来将ASCII数据转换为UTF-8。 但是当我将这些数据存储到SQLite数据库时。它不能正确地存储它 在java中获取UTF-8字符串的代码 Data = Data.replaceAll(":", ""); byte[] btarrBytes = Hex.decodeHex(Data.toCharArray()); String UTF8Data = new String(btarrBytes, "UTF-8"); java中SQLite的插入查询 查询执行 转换前的输入

我编写了以下代码来将ASCII数据转换为UTF-8。 但是当我将这些数据存储到SQLite数据库时。它不能正确地存储它

在java中获取UTF-8字符串的代码

Data = Data.replaceAll(":", "");
byte[] btarrBytes = Hex.decodeHex(Data.toCharArray());
String UTF8Data = new String(btarrBytes, "UTF-8");

java中SQLite的插入查询
查询执行 转换前的输入数据是无效的

e3:83:95:e3:83:ac:e3:83:bc:e3:83:a0:e3:83:af:e3:83:bc:e3:82:af

目前,UTF-8数据保存在SQLite DB中,如下所示

繝輔Ξ繝シ繝�繝ッ繝シ繧ッ

但它应该保存如下

フレームワーク

请注意,在调试模式下,数据会正确保存

此外,在转换之后,数据以适当的字符串保存在MYSQL数据库中,我使用c#进行插入。 但数据并没有用正确的字符串从java保存在SQLite DB中,所以我认为问题在于SQLite DB的INSERT语句

正如我所说,在MYSQL上,C#的数据被正确保存。在这里,我创建了一个以N作为前缀的查询,其值如下=>N'{5}'

sb.AppendLine(
                string.Format("('{0}', '{1}', '{2}', '{3}', '{4}', N'{5}', '{6}', '0', '{7}', '{8}', '{7}', '{8}'),"
                , ID // 0
                , DevID //1
                , sDTime // 2
                , sDevTime // 3
                , aryDcaRVerCounter[i].Index.ToString() // 4
                , aryDcaRVerCounter[i].Name // 5
                , aryDcaRVerCounter[i].Code // 6
                , sUpdateTime // 7
                , UserId // 8
                )

您不需要将ASCII转换为UTF-8。ASCII是UTF-8的一个子集。是否有任何错误?数据在数据库中的外观如何?如何保存数据(您尚未展示如何构建sbValues),如何检索数据,如何打印检索到的数据?如果我是您,我会使用准备好的语句。问题不在转换过程中,您也没有给我们提供太多关于您对值所做的操作、您的语句的外观以及它的运行方式的线索。@realponsignist很抱歉给您带来麻烦。现在我已经找到了问题的原因。数据已正确转换。在首先保存到DB之前,它会出于某种目的保存到文本文件中。从文本文件中再次读取数据。并保存到数据库中。问题在于文本文件的读取方法。我的意思是,它不是用UTF-8阅读的。谢谢你的支持。
Connection objConnect = null;
Statement objStmt = null;

objConnect = objDCASQLiteUtility.getSQliteConnection(sDBPath);
sQuery = objSQliteCreator.getRDataWriteQuery(.............)
objStmt = objConnect.createStatement();
objStmt.executeUpdate(sQuery);
sb.AppendLine(
                string.Format("('{0}', '{1}', '{2}', '{3}', '{4}', N'{5}', '{6}', '0', '{7}', '{8}', '{7}', '{8}'),"
                , ID // 0
                , DevID //1
                , sDTime // 2
                , sDevTime // 3
                , aryDcaRVerCounter[i].Index.ToString() // 4
                , aryDcaRVerCounter[i].Name // 5
                , aryDcaRVerCounter[i].Code // 6
                , sUpdateTime // 7
                , UserId // 8
                )