2013-04-29 89 views
1

我正在使用Apache File Utilities从.sql文件读取下面的行。在使用apache读取sql文件时使用的编码FIleutilities

INSERT INTO表名(MESSAGE)VALUE( '的£ [%1]转移到 以下[%2]:');

但在阅读后我得到的下面:

'转移[%1]以下的[%2]:'

问题: * £ *被读入为

我正在使用下面的代码逐行读取文件:

LineIterator it = FileUtils.lineIterator(file, "UTF-8"); 
while (it.hasNext()) { 
       lineCount++; 
       line = it.nextLine(); 
       System.out.println(line); 

打印行显示为:的[%1]转移到以下的[%2]:”

当我看到NetBeans中的变量监视它表明焦炭用作\ ufffd

我读了错误的编码?

是否有任何编码可以用来读取SQL查询?

+0

这看起来似乎是正确读取文件的问题。在*显示*值时出现错误也是有道理的。你怎么知道这个价值是不正确的?你如何显示它? – 2013-04-29 12:30:11

回答

1

这听起来像你选择了错误的编码为您的文件。通过尝试使用代码示例读取ISO 8859-1编码文件,我能够重现您的问题。

您需要确定文本文件的编码并相应地调整您的字符集。例如。

LineIterator it = FileUtils.lineIterator(file, Charsets.ISO_8859_1.name()); 

不幸的是,确定编码是not something you can do automatically。你需要明确地告诉编码是什么。

+0

@Dunncan我同意你邓肯。有没有一种方法来识别编码? Mine是一个.sql文件 – Wills 2013-04-29 12:44:00

+0

@Wills不,正如我在最后一段中所解释的那样,你无法确定地以编程方式解决这个问题。有些程序可以为你猜测,但这只是一个猜测。 – 2013-04-29 12:47:23

+0

感谢您的帮助,请让我知道我可以用来纠正编码的任何资源 - 如果方便的话? – Wills 2013-04-29 12:50:58

相关问题