Java字符编码写入文本文件

时间:2015-10-14 22:34:59

标签: java linux encoding utf-8 filewriter

  

我的问题如下:

写入文本文件时出现字符编码问题。问题是字符没有显示预期值。例如我正在写''(可能是Tab字符),'Â'是文本文件中显示的内容。

  

背景资料

此数据存储在MSQL数据库中。数据库排序规则为varchar,字段为OutputStreamWriter。我来学习排序规则和类型确定在数据库端使用什么字符编码。值存储正确,因此没有问题。

我的Java应用程序运行查询以从数据库中提取数据,这也看起来不错。我已经调试了代码,并且在写入文件之前看到所有字符串都有正确的表示。

接下来,我使用public OfferFileBuilder(String clientAppName, boolean isAppend) throws IOException, URISyntaxException { String exportFileLocation = getExportedFileLocation(); File offerFile = new File(getDatedFileName(exportFileLocation+"/"+clientAppName+"_OFFERRECORDS")); bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(offerFile, isAppend), "UTF-8")); } 将文本写入.TXT文件,如下所示:

cat

现在,一旦我通过在文件上运行locale charmap命令打开Linux服务器上的文件或使用notepad ++打开文件,一些字符显示不正确。

我在服务器上运行了以下命令,以查看其编码UTF-8,其中打印echo $LANGen_US.UTF-8打印UTF-8,而回显$ LC_CTYPE`则不打印任何内容。

  

这是我到目前为止所尝试的内容。   我试图改变OutputStreamWriter使用的字符编码我尝试过UTF-8和CP1252。当切换编码时,某些字符是固定的,而其他字符则不正确地显示。

     

我的问题是这样的:   我的OutputStreamWriter应该使用哪种编码?   (奖金问题)我们应该如何避免这样的问题发生。我提供的经验法则是使用{{1}},你永远不会遇到问题,但现在情况并非如此。

1 个答案:

答案 0 :(得分:0)

在服务器上运行file -bi命令显示该文件使用ascii而不是utf8进行编码。完全删除文件并重新运行该过程为我解决了这个问题。